diff --git a/Gemfile.lock b/Gemfile.lock
index 488a72eaad45b334bbbd75b3f46f30f2bb3d6ff9..cf52ebeac9d15232e9eedbc3c6dcc8925ff2204e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -50,7 +50,7 @@ GEM
       domain_name (~> 0.5)
     ice_nine (0.11.2)
     ipaddress (0.8.3)
-    json (1.8.6)
+    json (2.5.1)
     mediawiki_api (0.7.1)
       faraday (~> 0.9, >= 0.9.0)
       faraday-cookie_jar (~> 0.0, >= 0.0.6)
diff --git a/Rakefile b/Rakefile
index 1af53b0ca28f363602036a8566955cf1eca24c49..e3a3537987998839ce9797a8ab544e6cb4263b9d 100644
--- a/Rakefile
+++ b/Rakefile
@@ -128,7 +128,7 @@ namespace :gen do
     exit(ret)
   end
 
-  desc "Generate OAR properties -- parameters: SITE=grenoble CLUSTER={yeti,...} DO={print,table,update,diff} [VERBOSE={0,1,2,3}] [OAR_SERVER=192.168.37.10] [OAR_SERVER_USER=g5kadmin]"
+  desc "Generate OAR properties -- parameters: SITE=grenoble CLUSTER={yeti,...} DO={print,table,update,diff} [OAR_SERVER=192.168.37.10] [OAR_SERVER_USER=g5kadmin]"
   task "oar-properties" do
     # Manage oar-properties for a given set of Grid'5000 cluster. The task takes the following parameters
     # Params:
@@ -195,8 +195,6 @@ namespace :gen do
       exit(1)
     end
 
-    options[:verbose] = ENV['VERBOSE'].to_i if ENV['VERBOSE']
-
     ret = generate_oar_properties(options)
     exit(ret)
   end
diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index a20171f863e48da9ed1634d9ea4b60e592cd74fc..7c386978e0f0fcdcfe870c4e9c3fd9f0f0b692e3 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -5,6 +5,10 @@ require 'refrepo/data_loader'
 require 'net/ssh'
 require 'refrepo/gpu_ref'
 
+# TODO missing test case: dead nodes (see coverage)
+# TODO missing test case: quirk cluster (see coverage)
+# TODO for gpu_model (and others?) use NULL instead of empty string
+
 class MissingProperty < StandardError; end
 
 MiB = 1024**2
@@ -211,42 +215,27 @@ end
 #   (3)         > * If the resource already exists, the CPU and CORE associated to the resource is detected
 #   (4)           * The resource is exported as an OAR command
 #   (5)      * If applicable, create/update the storage devices associated to the node
-def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy, faulty_resources=nil, faulty_nodes=nil)
+def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy)
 
   result = ""
 
-  print_header = true
-
-  if not faulty_nodes.nil? or not faulty_resources.nil?
-    print_header = false
-  end
+  # Generate helper functions and detect the next available CPU and CORE IDs for
+  # non exisiting resources
+  result += generate_oar_commands_header()
 
-  if print_header
-    # Generate helper functions and detect the next available CPU and CORE IDs for
-    # non exisiting resources
-    result += generate_oar_commands_header()
-
-    # Ensure that OAR properties exist before creating/updating OAR resources
-    result += generate_oar_property_creation(site_name, data_hierarchy)
-  end
+  # Ensure that OAR properties exist before creating/updating OAR resources
+  result += generate_oar_property_creation(site_name, data_hierarchy)
 
   # Iterate over nodes of the generated resource hierarchy
   generated_hierarchy[:nodes].each do |node|
 
-    print_node_header = true
 
-    if not faulty_nodes.nil? and not faulty_nodes.include?(node[:fqdn])
-      print_node_header = false
-    end
-
-    if print_node_header
-      result += %Q{
+    result += %Q{
 
 ###################################
 # #{node[:fqdn]}
 ###################################
 }
-    end
 
     # Iterate over the resources of the OAR node
     node[:oar_rows].each do |oar_ressource_row|
@@ -261,10 +250,6 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       gpudevicepath = oar_ressource_row[:gpudevicepath].to_s
       resource_id = oar_ressource_row[:resource_id]
 
-      if not faulty_resources.nil? and not faulty_resources.include?(resource_id)
-        next
-      end
-
       if resource_id == -1 or resource_id.nil?
         # Add the resource to the OAR DB
         if gpu == ''
@@ -282,15 +267,8 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       end
     end
 
-    print_node = true
-    if not faulty_nodes.nil? and not faulty_nodes.include?(node[:name])
-      print_node = false
-    end
-
-    if print_node
-      # Set the OAR properties of the OAR node
-      result += generate_set_node_properties_cmd(node[:fqdn], node[:default_description])
-    end
+    # Set the OAR properties of the OAR node
+    result += generate_set_node_properties_cmd(node[:fqdn], node[:default_description])
 
     # Iterate over storage devices
     node[:description]["storage_devices"].select{|v| v.key?("reservation") and v["reservation"]}.each do |storage_device|
@@ -303,10 +281,6 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       storage_device_name = storage_device["device"]
       storage_device_name_with_hostname = "#{storage_device_name}.#{node[:name]}"
 
-      if not faulty_nodes.nil? and not faulty_nodes.include?(storage_device_name_with_hostname)
-        next
-      end
-
       # Retried the site propertie that corresponds to this storage device
       storage_device_oar_properties_tuple = site_properties["disk"].select { |keys| keys.include?(storage_device_name_with_hostname) }.first
 
@@ -324,9 +298,7 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       result += generate_set_disk_properties_cmd(node[:fqdn], storage_device_name_with_hostname, storage_device_oar_properties)
     end
 
-    if print_node
-      result += generate_separators()
-    end
+    result += generate_separators()
   end
 
   return result
@@ -462,7 +434,7 @@ def get_ref_node_properties_internal(cluster_uid, cluster, node_uid, node)
     h['gpu_model'] = GPURef.getGrid5000LegacyNameFor(node['gpu_devices'].values[0]['model'])
     h['gpu_count'] = node['gpu_devices'].length
   else
-    h['gpu_model'] = false
+    h['gpu_model'] = ''
     h['gpu_count'] = 0
   end
 
@@ -637,7 +609,6 @@ def get_oar_data(site_uid, options)
     end
 
     # Download the OAR properties from the OAR API (through G5K API)
-    puts "Downloading resources properties from #{api_uri} ..." if options[:verbose] and options[:verbose] > 0
     http = Net::HTTP.new(api_uri.host, api_uri.port)
     if api_uri.scheme == "https"
       http.use_ssl = true
@@ -651,7 +622,6 @@ def get_oar_data(site_uid, options)
 
     response = http.request(request)
     raise "Failed to fetch resources properties from API: \n#{response.body}\n" unless response.code.to_i == 200
-    puts '... done' if options[:verbose] and options[:verbose] > 0
 
     oarnodes = JSON.parse(response.body)
 
@@ -752,7 +722,6 @@ def ignore_default_keys()
     "cpu", # This property was created by 'oar_resources_add'
     "host", # This property was created by 'oar_resources_add'
     "gpudevice", # New property taken into account by the new generator
-    "gpu_model", # New property taken into account by the new generator
     "gpu", # New property taken into account by the new generator
     "cpuset",
     "desktop_computing",
@@ -872,13 +841,12 @@ def get_oar_properties_from_oar(options)
 end
 
 def do_diff(options, generated_hierarchy, refrepo_properties)
+  raise if options[:update] or options[:print] # no longer supported, was never really supported
+
   ret = 0
 
   diagnostic_msgs = []
 
-  faulty_resources = []
-  faulty_nodes = []
-
   properties = {
     'ref' => refrepo_properties,
     'oar' => get_oar_properties_from_oar(options)
@@ -896,191 +864,169 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
   end
   ignore_default_keys = ignore_default_keys()
 
-  # Diff
-  if options[:diff]
-    # Build the list of nodes that are listed in properties['oar'],
-    # but does not exist in properties['ref']
-    # We distinguish 'Dead' nodes and 'Alive'/'Absent'/etc. nodes
-    missings_alive = []
-    missings_dead = []
-    properties['oar'].each do |site_uid, site_properties|
-      site_properties['default'].each_filtered_node_uid(options[:clusters], options[:nodes]) do |node_uid, node_properties_oar|
-        unless properties['ref'][site_uid]['default'][node_uid]
-          node_properties_oar['state'] != 'Dead' ? missings_alive << node_uid : missings_dead << node_uid
+  # Build the list of nodes that are listed in properties['oar'],
+  # but does not exist in properties['ref']
+  # We distinguish 'Dead' nodes and 'Alive'/'Absent'/etc. nodes
+  missings_alive = []
+  missings_dead = []
+  properties['oar'].each do |site_uid, site_properties|
+    site_properties['default'].each_filtered_node_uid(options[:clusters], options[:nodes]) do |node_uid, node_properties_oar|
+      unless properties['ref'][site_uid]['default'][node_uid]
+        if node_properties_oar['state'] != 'Dead'
+          missings_alive << node_uid
+        else
+          missings_dead << node_uid
         end
       end
     end
+  end
 
-    if missings_alive.size > 0
-      diagnostic_msgs.push("*** Error: The following nodes exist in the OAR server but are missing in the reference-repo: #{missings_alive.join(', ')}.\n")
-      ret = false unless options[:update] || options[:print]
-    end
-
-    skipped_nodes = []
-    prev_diff = {}
-    properties['diff'] = {}
-
-    header = false
-    properties['ref'].each do |site_uid, site_properties|
-      properties['diff'][site_uid] = {}
-      site_properties.each do |type, type_properties|
-        properties['diff'][site_uid][type] = {}
-        type_properties.each_filtered_node_uid(options[:clusters], options[:nodes]) do |key, properties_ref|
-          # As an example, key can be equal to 'grimoire-1' for default resources or
-          # ['grimoire-1', 1] for disk resources (disk n°1 of grimoire-1)
-          node_uid, = key
-
-          if properties_ref['state'] == 'Dead'
-            skipped_nodes << node_uid
-            next
-          end
+  if missings_alive.size > 0
+    diagnostic_msgs.push("*** Error: The following nodes exist in the OAR server but are missing in the reference-repo: #{missings_alive.join(', ')}.\n")
+    ret = false
+  end
 
-          properties_oar = properties['oar'][site_uid][type][key]
+  skipped_nodes = []
+  prev_diff = {}
+  properties['diff'] = {}
+
+  header = false
+  properties['ref'].each do |site_uid, site_properties|
+    properties['diff'][site_uid] = {}
+    site_properties.each do |type, type_properties|
+      properties['diff'][site_uid][type] = {}
+      type_properties.each_filtered_node_uid(options[:clusters], options[:nodes]) do |key, properties_ref|
+        # As an example, key can be equal to 'grimoire-1' for default resources or
+        # ['grimoire-1', 1] for disk resources (disk n°1 of grimoire-1)
+        node_uid, = key
+
+        if properties_ref['state'] == 'Dead'
+          skipped_nodes << node_uid
+          next
+        end
 
-          diff = diff_properties(type, properties_oar, properties_ref) # Note: this deletes some properties from the input parameters
-          diff_keys = diff.map { |hashdiff_array| hashdiff_array[1] }
-          properties['diff'][site_uid][type][key] = properties_ref.select { |k, _v| diff_keys.include?(k) }
+        properties_oar = properties['oar'][site_uid][type][key]
 
-          if not diff.empty?
-            if key.kind_of?(Array)
-              faulty_nodes.push(key[-1])
-            else
-              faulty_nodes.push(key)
-            end
-          end
+        diff = diff_properties(type, properties_oar, properties_ref) # Note: this deletes some properties from the input parameters
+        diff_keys = diff.map { |hashdiff_array| hashdiff_array[1] }
+        properties['diff'][site_uid][type][key] = properties_ref.select { |k, _v| diff_keys.include?(k) }
 
-          # Verbose output
-          if properties['oar'][site_uid][type][key].nil?
-            info = ((type == 'default') ? ' new node !' : ' new disk !')
-          else
-            info = ''
-          end
+        if properties['oar'][site_uid][type][key].nil?
+          info = ((type == 'default') ? ' new node !' : ' new disk !')
+        else
+          info = ''
+        end
 
-          case options[:verbose]
-          when 1
-            diagnostic_msgs.push( "#{key}:#{info}") if info != ''
-            diagnostic_msgs.push( "#{key}:#{diff_keys}") if diff.size != 0
-          when 2
-            # Give more details
-            if header == false
-              diagnostic_msgs.push( "Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed")
-              header = true
-            end
-            if diff.empty?
-              diagnostic_msgs.push( "  #{key}: OK#{info}")
-            elsif diff == prev_diff
-              diagnostic_msgs.push( "  #{key}:#{info} same modifications as above")
-            else
-              diagnostic_msgs.push( "  #{key}:#{info}")
-              diff.each { |d| diagnostic_msgs.push( "    #{d}") }
-            end
-            prev_diff = diff
-          when 3
-            # Even more details
-            diagnostic_msgs.push( "#{key}:#{info}") if info != ''
-            diagnostic_msgs.push( JSON.pretty_generate(key => { 'old values' => properties_oar, 'new values' => properties_ref }))
-          end
-          if diff.size != 0
-            ret = false unless options[:update] || options[:print]
-          end
+        if header == false
+          # output header only once
+          diagnostic_msgs.push( "Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed")
+          header = true
+        end
+        if diff.empty?
+          diagnostic_msgs.push( "  #{key}: OK#{info}")
+        elsif diff == prev_diff
+          diagnostic_msgs.push( "  #{key}:#{info} same modifications as above")
+        else
+          diagnostic_msgs.push( "  #{key}:#{info}")
+          diff.each { |d| diagnostic_msgs.push( "    #{d}") }
+        end
+        prev_diff = diff
+        if diff.size != 0
+          ret = false
         end
       end
+    end
 
-      # Get the list of property keys from the OAR scheduler (['oar'])
-      properties_keys['oar'][site_uid] = get_property_keys(properties['oar'][site_uid])
-
-      # Build the list of properties that must be created in the OAR server
-      properties_keys['diff'][site_uid] = {}
-      properties_keys['ref'][site_uid].each do |k, v_ref|
-        v_oar = properties_keys['oar'][site_uid][k]
-        properties_keys['diff'][site_uid][k] = v_ref unless v_oar
-        if v_oar && v_oar != v_ref && v_ref != NilClass && v_oar != NilClass
-          # Detect inconsistency between the type (String/Integer) of properties generated by this script and the existing values on the server.
-          diagnostic_msgs.push( "Error: the OAR property '#{k}' is a '#{v_oar}' on the #{site_uid} server and this script uses '#{v_ref}' for this property.")
-          ret = false unless options[:update] || options[:print]
-        end
+    # Get the list of property keys from the OAR scheduler (['oar'])
+    properties_keys['oar'][site_uid] = get_property_keys(properties['oar'][site_uid])
+
+    # Build the list of properties that must be created in the OAR server
+    properties_keys['diff'][site_uid] = {}
+    properties_keys['ref'][site_uid].each do |k, v_ref|
+      v_oar = properties_keys['oar'][site_uid][k]
+      properties_keys['diff'][site_uid][k] = v_ref unless v_oar
+      if v_oar && v_oar != v_ref && v_ref != NilClass && v_oar != NilClass
+        # Detect inconsistency between the type (String/Integer) of properties generated by this script and the existing values on the server.
+        diagnostic_msgs.push( "Error: the OAR property '#{k}' is a '#{v_oar}' on the #{site_uid} server and this script uses '#{v_ref}' for this property.")
+        ret = false
       end
+    end
 
-      diagnostic_msgs.push( "Properties that need to be created on the #{site_uid} server: #{properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_keys.include?(e) }.join(', ')}") if options[:verbose] && properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_keys.include?(e) }.size > 0
+    diagnostic_msgs.push( "Properties that need to be created on the #{site_uid} server: #{properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_keys.include?(e) }.join(', ')}") if properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_keys.include?(e) }.size > 0
 
-      # Detect unknown properties
-      unknown_properties = properties_keys['oar'][site_uid].keys.to_set - properties_keys['ref'][site_uid].keys.to_set
-      ignore_default_keys.each do |key|
-        unknown_properties.delete(key)
-      end
+    # Detect unknown properties
+    unknown_properties = properties_keys['oar'][site_uid].keys.to_set - properties_keys['ref'][site_uid].keys.to_set
+    ignore_default_keys.each do |key|
+      unknown_properties.delete(key)
+    end
 
-      if options[:verbose] && unknown_properties.size > 0
-        diagnostic_msgs.push( "Properties existing on the #{site_uid} server but not managed/known by the generator: #{unknown_properties.to_a.join(', ')}.")
-        diagnostic_msgs.push( "Hint: you can delete properties with 'oarproperty -d <property>' or add them to the ignore list in lib/lib-oar-properties.rb.")
-        ret = false unless options[:update] || options[:print]
-      end
-      diagnostic_msgs.push( "Skipped retired nodes: #{skipped_nodes}") if skipped_nodes.any?
+    if unknown_properties.size > 0
+      diagnostic_msgs.push( "Properties existing on the #{site_uid} server but not managed/known by the generator: #{unknown_properties.to_a.join(', ')}.")
+      diagnostic_msgs.push( "Hint: you can delete properties with 'oarproperty -d <property>' or add them to the ignore list in lib/lib-oar-properties.rb.")
+      ret = false
+    end
+    diagnostic_msgs.push( "Skipped retired nodes: #{skipped_nodes}") if skipped_nodes.any?
 
 
-      if not (options[:print] and options[:diff])
-        diagnostic_msgs.map{|msg| puts(msg)}
-      end
+    if not options[:print]
+      diagnostic_msgs.map{|msg| puts(msg)}
+    end
 
-      # Check that CPUSETs on the OAR server are consistent with what would have been generated
-      oar_resources = get_oar_resources_from_oar(options)
+    # Check that CPUSETs on the OAR server are consistent with what would have been generated
+    oar_resources = get_oar_resources_from_oar(options)
 
-      error_msgs = ""
+    error_msgs = ""
 
-      options[:clusters].each do |cluster|
+    options[:clusters].each do |cluster|
 
-        generated_rows_for_this_cluster = generated_hierarchy[:nodes]
-                                              .map{|node| node[:oar_rows]}
-                                              .flatten
-                                              .select{|r| r[:cluster] == cluster}
+      generated_rows_for_this_cluster = generated_hierarchy[:nodes]
+      .map{|node| node[:oar_rows]}
+      .flatten
+      .select{|r| r[:cluster] == cluster}
 
-        site_resources = oar_resources[site_uid]["resources"]
-        cluster_resources = site_resources.select{|x| x["cluster"] == cluster}
-        default_cluster_resources = cluster_resources.select{|r| r["type"] == "default"}
+      site_resources = oar_resources[site_uid]["resources"]
+      cluster_resources = site_resources.select{|x| x["cluster"] == cluster}
+      default_cluster_resources = cluster_resources.select{|r| r["type"] == "default"}
 
 
-        if generated_rows_for_this_cluster.length > 0
-          # Check that OAR resources are associated with the right cpu, core and cpuset
-          generated_rows_for_this_cluster.each do |row|
-            corresponding_resource = default_cluster_resources.select{|r| r["id"] == row[:resource_id]}
-            if corresponding_resource.length > 0
-              resc = corresponding_resource[0]
+      if generated_rows_for_this_cluster.length > 0
+        # Check that OAR resources are associated with the right cpu, core and cpuset
+        generated_rows_for_this_cluster.each do |row|
+          corresponding_resource = default_cluster_resources.select{|r| r["id"] == row[:resource_id]}
+          if corresponding_resource.length > 0
+            resc = corresponding_resource[0]
 
-              {:cpu => "cpu", :core => "core", :cpuset => "cpuset", :gpu => "gpu", :gpudevice => "gpudevice"}.each do |key, value|
-                if row[key].to_s != corresponding_resource[0][value].to_s and not (key == :gpu and row[key].nil? and corresponding_resource[0][value] == 0)
-                  expected_value = row[key]
-                  if expected_value == "" or expected_value.nil?
-                    expected_value = "ø"
-                  end
-                  diagnostic_msg = <<-TXT
-# Error: Resource #{resc["id"]} (host=#{resc["network_address"]} cpu=#{resc["cpu"]} core=#{resc["core"]} cpuset=#{resc["cpuset"]} gpu=#{resc["gpu"]} gpudevice=#{resc["gpudevice"]}) has a mismatch for ressource #{value.upcase}: OAR API gives #{resc[value]}, generator wants #{expected_value}.
-TXT
-                  error_msgs += "#{diagnostic_msg}"
-                  faulty_resources.push(row[:resource_id])
-                  faulty_resources.push(row[:host])
+            {:cpu => "cpu", :core => "core", :cpuset => "cpuset", :gpu => "gpu", :gpudevice => "gpudevice"}.each do |key, value|
+              if row[key].to_s != corresponding_resource[0][value].to_s and not (key == :gpu and row[key].nil? and corresponding_resource[0][value] == 0)
+                expected_value = row[key]
+                if expected_value == "" or expected_value.nil?
+                  expected_value = "null"
                 end
+                diagnostic_msg = <<-TXT
+# Error: Resource #{resc["id"]} (host=#{resc["network_address"]} cpu=#{resc["cpu"]} core=#{resc["core"]} cpuset=#{resc["cpuset"]} gpu=#{resc["gpu"]} gpudevice=#{resc["gpudevice"]}) has a mismatch for ressource #{value.upcase}: OAR API gives #{resc[value]}, generator wants #{expected_value}.
+                TXT
+                error_msgs += "#{diagnostic_msg}"
               end
-            else
-              # If resource_id is not equal to -1, then the generator is working on a resource that should exist,
-              # however it cannot be found : the generator reports an error to the operator
-              if row[:resource_id] != -1
-                puts "Error: could not find ressource with ID=#{row[:resource_id]}"
-                faulty_resources.push(row[:resource_id])
-                faulty_resources.push(row[:host])
-              end
+            end
+          else
+            # If resource_id is not equal to -1, then the generator is working on a resource that should exist,
+            # however it cannot be found : the generator reports an error to the operator
+            if row[:resource_id] != -1
+              puts "Error: could not find ressource with ID=#{row[:resource_id]}"
             end
           end
         end
       end
+    end
 
-      if not (options[:print] and options[:diff]) and not error_msgs.empty?
-        puts error_msgs
-        ret = false unless options[:update] || options[:print]
-      end
+    if not options[:print] and not error_msgs.empty?
+      puts error_msgs
+      ret = false
+    end
 
-    end # if options[:diff]
   end
 
-  return ret, faulty_resources, faulty_nodes
+  return ret
 end
 
 
@@ -1505,13 +1451,14 @@ def generate_oar_properties(options)
 
   ############################################
   # Fetch:
-  # 1) hierarchy from YAML files
-  # 2) generated data from load_data_hierarchy
-  # 3) oar properties from the reference repository
+  # 1) generated data from load_data_hierarchy
+  # 2) oar properties from the reference repository
   ############################################
 
+  # Load the description from the ref-api (data/ dir)
   data_hierarchy = load_data_hierarchy
 
+  # filter based on site/cluster
   site_name = options[:site]
 
   # Replace the site placeholder of ssh hosts by the site
@@ -1529,26 +1476,17 @@ def generate_oar_properties(options)
     clusters = options[:clusters]
   end
 
+  # convert to OAR properties
   refrepo_properties = get_oar_properties_from_the_ref_repo(data_hierarchy, {
       :sites => [site_name]
   })
 
-  ############################################
-  # Generate information about the clusters
-  ############################################
-
-  begin
-    generated_hierarchy = extract_clusters_description(clusters,
+  # also fetch the resources hierarchy inside nodes (cores, gpus, etc.)
+  generated_hierarchy = extract_clusters_description(clusters,
                                                        site_name,
                                                        options,
                                                        data_hierarchy,
                                                        refrepo_properties[site_name])
-  rescue
-    puts "A problem occured while building the clusters description. Generator is exiting."
-    puts $!
-    puts $@
-    return 1
-  end
 
   ############################################
   # Output generated information
@@ -1563,17 +1501,12 @@ def generate_oar_properties(options)
 
   # Do=Diff
   if options.key? :diff and options[:diff]
-    return_code, faulty_resources, faulty_nodes = do_diff(options, generated_hierarchy, refrepo_properties)
-    ret = return_code
+    ret = do_diff(options, generated_hierarchy, refrepo_properties)
   end
 
   # DO=print
   if options.key? :print and options[:print]
-    if options[:diff]
-      cmds = export_rows_as_oar_command(generated_hierarchy, site_name, refrepo_properties[site_name], data_hierarchy, faulty_resources, faulty_nodes)
-    else
-      cmds = export_rows_as_oar_command(generated_hierarchy, site_name, refrepo_properties[site_name], data_hierarchy)
-    end
+    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, refrepo_properties[site_name], data_hierarchy)
 
     puts(cmds)
   end
@@ -1590,5 +1523,5 @@ def generate_oar_properties(options)
   return ret
 end
 
-end
+end # Module
 include OarProperties
diff --git a/spec/input/data.json b/spec/input/data.json
new file mode 100644
index 0000000000000000000000000000000000000000..9be1aacb287bee6669b13df17323a53debc1dc38
--- /dev/null
+++ b/spec/input/data.json
@@ -0,0 +1,815 @@
+{
+  "sites": {
+    "fakesite": {
+      "clusters": {
+        "clustera": {
+          "nodes": {
+            "clustera-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "contiguous"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "gpu": {
+                "gpu": true,
+                "gpu_cores": 17408,
+                "gpu_count": 4,
+                "gpu_model": "RTX 2080 Ti",
+                "gpu_vendor": "Nvidia"
+              },
+              "gpu_devices": {
+                "nvidia0": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia0",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.17.00.B2",
+                  "vendor": "Nvidia"
+                },
+                "nvidia1": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia1",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.17.00.B2",
+                  "vendor": "Nvidia"
+                },
+                "nvidia2": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia2",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.0B.40.09",
+                  "vendor": "Nvidia"
+                },
+                "nvidia3": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia3",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.17.00.B2",
+                  "vendor": "Nvidia"
+                }
+              },
+              "main_memory": {
+                "ram_size": 137438953472
+              },
+              "monitoring": {
+                "wattmeter": "multiple"
+              },
+              "network_adapters": [{
+                "bridged": false,
+                "device": "eth0",
+                "driver": "bnxt_en",
+                "enabled": false,
+                "firmware_version": "214.0.173/1.9.2 pkg 21.40.20.0",
+                "interface": "Ethernet",
+                "mac": "f4:02:70:9a:3f:64",
+                "management": false,
+                "model": "BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller",
+                "mountable": false,
+                "mounted": false,
+                "name": "eno1",
+                "vendor": "Broadcom"
+              }, {
+                "bridged": false,
+                "device": "eth1",
+                "driver": "bnxt_en",
+                "enabled": false,
+                "firmware_version": "214.0.173/1.9.2 pkg 21.40.20.0",
+                "interface": "Ethernet",
+                "mac": "f4:02:70:9a:3f:65",
+                "management": false,
+                "model": "BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller",
+                "mountable": false,
+                "mounted": false,
+                "name": "eno2d1",
+                "vendor": "Broadcom"
+              }, {
+                "bridged": true,
+                "device": "eth2",
+                "driver": "i40e",
+                "enabled": true,
+                "firmware_version": "6.80 0x80003d72 18.8.9",
+                "interface": "Ethernet",
+                "ip": "172.16.64.1",
+                "mac": "f8:f2:1e:60:41:20",
+                "management": false,
+                "model": "Ethernet Controller X710 for 10GbE SFP+",
+                "mountable": true,
+                "mounted": true,
+                "name": "enp137s0f0",
+                "network_address": "clustera-1.fakesite.grid5000.fr",
+                "rate": 10000000000,
+                "switch": "gw-fakesite",
+                "switch_port": "Ethernet6/39",
+                "vendor": "Intel"
+              }, {
+                "bridged": false,
+                "device": "eth3",
+                "driver": "i40e",
+                "enabled": false,
+                "firmware_version": "6.80 0x80003d72 18.8.9",
+                "interface": "Ethernet",
+                "mac": "f8:f2:1e:60:41:21",
+                "management": false,
+                "model": "Ethernet Controller X710 for 10GbE SFP+",
+                "mountable": false,
+                "mounted": false,
+                "name": "enp137s0f1",
+                "vendor": "Intel"
+              }, {
+                "device": "bmc",
+                "enabled": true,
+                "interface": "Ethernet",
+                "ip": "172.17.64.1",
+                "mac": "f4:02:70:9a:3f:74",
+                "management": true,
+                "mountable": false,
+                "mounted": false,
+                "network_address": "clustera-1-bmc.fakesite.grid5000.fr"
+              }],
+              "operating_system": {
+                "cstate_driver": "intel_idle",
+                "cstate_governor": "menu",
+                "ht_enabled": true,
+                "pstate_driver": "intel_pstate",
+                "pstate_governor": "performance",
+                "turboboost_enabled": true
+              },
+              "performance": {
+                "core_flops": 17713000000,
+                "node_flops": 202670000000
+              },
+              "processor": {
+                "cache_l1": null,
+                "cache_l1d": 32768,
+                "cache_l1i": 32768,
+                "cache_l2": 1048576,
+                "cache_l3": 11534336,
+                "clock_speed": 2100000000,
+                "ht_capable": true,
+                "instruction_set": "x86-64",
+                "microarchitecture": "Skylake",
+                "model": "Intel Xeon",
+                "other_description": "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz",
+                "vendor": "Intel",
+                "version": "Silver 4110"
+              },
+              "sensors": {
+                "power": {
+                  "available": true,
+                  "via": {
+                    "api": {
+                      "metric": "power"
+                    },
+                    "pdu": [{
+                      "port": 1,
+                      "uid": "clustera-pdu1"
+                    }, {
+                      "port": 1,
+                      "uid": "clustera-pdu2"
+                    }]
+                  }
+                }
+              },
+              "storage_devices": [{
+                "by_id": "/dev/disk/by-id/wwn-0x6f402700aefea00024afe4c307e10af8",
+                "by_path": "/dev/disk/by-path/pci-0000:19:00.0-scsi-0:2:0:0",
+                "device": "sda",
+                "driver": "megaraid_sas",
+                "firmware_version": 4.29,
+                "interface": "SATA",
+                "model": "PERC H330 Adp",
+                "size": 479559942144,
+                "storage": "SSD",
+                "vendor": "Dell (Raid)"
+              }],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": ["admin", "production"],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clustera-1"
+            },
+            "clustera-2": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "contiguous"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "gpu": {
+                "gpu": true,
+                "gpu_cores": 17408,
+                "gpu_count": 4,
+                "gpu_model": "RTX 2080 Ti",
+                "gpu_vendor": "Nvidia"
+              },
+              "gpu_devices": {
+                "nvidia0": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia0",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.17.00.B2",
+                  "vendor": "Nvidia"
+                },
+                "nvidia1": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia1",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.0B.40.09",
+                  "vendor": "Nvidia"
+                },
+                "nvidia2": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia2",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.0B.40.09",
+                  "vendor": "Nvidia"
+                },
+                "nvidia3": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia3",
+                  "memory": 10989000000,
+                  "model": "GeForce RTX 2080 Ti",
+                  "power_default_limit": "250.00 W",
+                  "vbios_version": "90.02.17.00.AC",
+                  "vendor": "Nvidia"
+                }
+              },
+              "main_memory": {
+                "ram_size": 137438953472
+              },
+              "monitoring": {
+                "wattmeter": "multiple"
+              },
+              "network_adapters": [{
+                "bridged": false,
+                "device": "eth0",
+                "driver": "bnxt_en",
+                "enabled": false,
+                "firmware_version": "214.0.173/1.9.2 pkg 21.40.20.0",
+                "interface": "Ethernet",
+                "mac": "f4:02:70:9a:48:d8",
+                "management": false,
+                "model": "BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller",
+                "mountable": false,
+                "mounted": false,
+                "name": "eno1",
+                "vendor": "Broadcom"
+              }, {
+                "bridged": false,
+                "device": "eth1",
+                "driver": "bnxt_en",
+                "enabled": false,
+                "firmware_version": "214.0.173/1.9.2 pkg 21.40.20.0",
+                "interface": "Ethernet",
+                "mac": "f4:02:70:9a:48:d9",
+                "management": false,
+                "model": "BCM57416 NetXtreme-E 10GBase-T RDMA Ethernet Controller",
+                "mountable": false,
+                "mounted": false,
+                "name": "eno2d1",
+                "vendor": "Broadcom"
+              }, {
+                "bridged": true,
+                "device": "eth2",
+                "driver": "i40e",
+                "enabled": true,
+                "firmware_version": "6.80 0x80003d72 18.8.9",
+                "interface": "Ethernet",
+                "ip": "172.16.64.2",
+                "mac": "f8:f2:1e:60:3f:a0",
+                "management": false,
+                "model": "Ethernet Controller X710 for 10GbE SFP+",
+                "mountable": true,
+                "mounted": true,
+                "name": "enp137s0f0",
+                "network_address": "clustera-2.fakesite.grid5000.fr",
+                "rate": 10000000000,
+                "switch": "gw-fakesite",
+                "switch_port": "Ethernet6/40",
+                "vendor": "Intel"
+              }, {
+                "bridged": false,
+                "device": "eth3",
+                "driver": "i40e",
+                "enabled": false,
+                "firmware_version": "6.80 0x80003d72 18.8.9",
+                "interface": "Ethernet",
+                "mac": "f8:f2:1e:60:3f:a1",
+                "management": false,
+                "model": "Ethernet Controller X710 for 10GbE SFP+",
+                "mountable": false,
+                "mounted": false,
+                "name": "enp137s0f1",
+                "vendor": "Intel"
+              }, {
+                "device": "bmc",
+                "enabled": true,
+                "interface": "Ethernet",
+                "ip": "172.17.64.2",
+                "mac": "f4:02:70:9a:48:e8",
+                "management": true,
+                "mountable": false,
+                "mounted": false,
+                "network_address": "clustera-2-bmc.fakesite.grid5000.fr"
+              }],
+              "operating_system": {
+                "cstate_driver": "intel_idle",
+                "cstate_governor": "menu",
+                "ht_enabled": true,
+                "pstate_driver": "intel_pstate",
+                "pstate_governor": "performance",
+                "turboboost_enabled": true
+              },
+              "performance": {
+                "core_flops": 17713000000,
+                "node_flops": 202670000000
+              },
+              "processor": {
+                "cache_l1": null,
+                "cache_l1d": 32768,
+                "cache_l1i": 32768,
+                "cache_l2": 1048576,
+                "cache_l3": 11534336,
+                "clock_speed": 2100000000,
+                "ht_capable": true,
+                "instruction_set": "x86-64",
+                "microarchitecture": "Skylake",
+                "model": "Intel Xeon",
+                "other_description": "Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz",
+                "vendor": "Intel",
+                "version": "Silver 4110"
+              },
+              "sensors": {
+                "power": {
+                  "available": true,
+                  "via": {
+                    "api": {
+                      "metric": "power"
+                    },
+                    "pdu": [{
+                      "port": 6,
+                      "uid": "clustera-pdu1"
+                    }, {
+                      "port": 6,
+                      "uid": "clustera-pdu2"
+                    }]
+                  }
+                }
+              },
+              "storage_devices": [{
+                "by_id": "/dev/disk/by-id/wwn-0x6f402700aeff430024929b4003cd51d0",
+                "by_path": "/dev/disk/by-path/pci-0000:19:00.0-scsi-0:2:0:0",
+                "device": "sda",
+                "driver": "megaraid_sas",
+                "firmware_version": 4.29,
+                "interface": "SATA",
+                "model": "PERC H330 Adp",
+                "size": 479559942144,
+                "storage": "SSD",
+                "vendor": "Dell (Raid)"
+              }],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": ["admin", "production"],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clustera-2"
+            }
+          },
+          "created_at": "Fri, 07 Jun 2019 00:00:00 GMT",
+          "kavlan": false,
+          "model": "Dell PowerEdge T640",
+          "queues": ["admin", "production"],
+          "type": "cluster",
+          "uid": "clustera"
+        }
+      },
+      "network_equipments": {
+        "gw-fakesite": {
+          "backplane_bps": 1280000000000,
+          "kind": "router",
+          "linecards": [{}, {}, {}, {}, {}, {}, {
+            "backplane_bps": 1280000000000,
+            "kavlan_pattern": "Ethernet%LINECARD%/%PORT%",
+            "kind": "node",
+            "model": "N9K-X9464PX",
+            "ports": [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {
+              "kind": "node",
+              "port": "eth2",
+              "uid": "clustera-1"
+            }, {
+              "kind": "node",
+              "port": "eth2",
+              "uid": "clustera-2"
+            }],
+            "rate": 10000000000,
+            "snmp_pattern": "Ethernet%LINECARD%/%PORT%"
+          }],
+          "model": "Cisco Nexus 9508",
+          "monitoring": {
+            "metric": "power",
+            "wattmeter": "multiple"
+          },
+          "sensors": {
+            "network": {
+              "available": true,
+              "resolution": 10
+            },
+            "power": {
+              "available": true,
+              "resolution": 1,
+              "via": {
+                "pdu": [{
+                  "port": 8,
+                  "uid": "graoully-pdu1"
+                }, {
+                  "port": 8,
+                  "uid": "graoully-pdu2"
+                }, {
+                  "port": 8,
+                  "uid": "grimoire-pdu1"
+                }, {
+                  "port": 8,
+                  "uid": "grimoire-pdu2"
+                }]
+              }
+            }
+          },
+          "site": "fakesite",
+          "snmp_community": "public",
+          "type": "network_equipment",
+          "uid": "gw-fakesite",
+          "vlans": {
+            "vlan100": {
+              "addresses": ["172.16.79.254"],
+              "administrative": true
+            },
+            "vlan101": {
+              "addresses": ["172.17.79.254"]
+            },
+            "vlan500": {
+              "addresses": ["192.168.4.14"]
+            },
+            "vlan701": {
+              "addresses": ["192.168.192.0/20"],
+              "name": "kavlan-1"
+            },
+            "vlan702": {
+              "addresses": ["192.168.208.0/20"],
+              "name": "kavlan-2"
+            },
+            "vlan703": {
+              "addresses": ["192.168.224.0/20"],
+              "name": "kavlan-3"
+            },
+            "vlan704": {
+              "addresses": ["10.16.0.0/18"],
+              "name": "kavlan-4"
+            },
+            "vlan705": {
+              "addresses": ["10.16.64.0/18"],
+              "name": "kavlan-5"
+            },
+            "vlan706": {
+              "addresses": ["10.16.128.0/18"],
+              "name": "kavlan-6"
+            },
+            "vlan707": {
+              "addresses": ["10.16.192.0/18"],
+              "name": "kavlan-7"
+            },
+            "vlan708": {
+              "addresses": ["10.17.0.0/18"],
+              "name": "kavlan-8"
+            },
+            "vlan709": {
+              "addresses": ["10.17.64.0/18"],
+              "name": "kavlan-9"
+            },
+            "vlan714": {
+              "addresses": ["10.19.192.0/18"],
+              "name": "kavlan-14"
+            }
+          },
+          "warranty": "2020-09-01",
+          "weathermap": {}
+        }
+      },
+      "pdus": {
+        "clustera-pdu1": {
+          "ip": "172.17.79.226",
+          "mac": "28:29:86:0B:3B:06",
+          "model": "AP8653",
+          "ports": {
+            "1": "clustera-1",
+            "6": "clustera-2"
+          },
+          "sensors": [{
+            "power": {
+              "per_outlets": true,
+              "resolution": 1,
+              "snmp": {
+                "available": true,
+                "outlet_prefix_oid": "iso.3.6.1.4.1.318.1.1.26.9.4.3.1.7",
+                "total_oids": ["iso.3.6.1.4.1.318.1.1.12.1.16.0"],
+                "unit": "W"
+              }
+            }
+          }],
+          "type": "pdu",
+          "uid": "clustera-pdu1",
+          "vendor": "APC"
+        },
+        "clustera-pdu3": {
+          "ip": "172.17.79.231",
+          "mac": "28:29:86:12:27:FF",
+          "model": "AP8653",
+          "ports": {},
+          "sensors": [{
+            "power": {
+              "per_outlets": true,
+              "resolution": 1,
+              "snmp": {
+                "available": true,
+                "outlet_prefix_oid": "iso.3.6.1.4.1.318.1.1.26.9.4.3.1.7",
+                "total_oids": ["iso.3.6.1.4.1.318.1.1.12.1.16.0"],
+                "unit": "W"
+              }
+            }
+          }],
+          "type": "pdu",
+          "uid": "clustera-pdu3",
+          "vendor": "APC"
+        },
+        "clustera-pdu2": {
+          "ip": "172.17.79.227",
+          "mac": "28:29:86:10:0E:8C",
+          "model": "AP8653",
+          "ports": {
+            "1": "clustera-1",
+            "6": "clustera-2"
+          },
+          "sensors": [{
+            "power": {
+              "per_outlets": true,
+              "resolution": 1,
+              "snmp": {
+                "available": true,
+                "outlet_prefix_oid": "iso.3.6.1.4.1.318.1.1.26.9.4.3.1.7",
+                "total_oids": ["iso.3.6.1.4.1.318.1.1.12.1.16.0"],
+                "unit": "W"
+              }
+            }
+          }],
+          "type": "pdu",
+          "uid": "clustera-pdu2",
+          "vendor": "APC"
+        },
+        "clustera-pdu4": {
+          "ip": "172.17.79.232",
+          "mac": "28:29:86:10:0E:B4",
+          "model": "AP8653",
+          "ports": {},
+          "sensors": [{
+            "power": {
+              "per_outlets": true,
+              "resolution": 1,
+              "snmp": {
+                "available": true,
+                "outlet_prefix_oid": "iso.3.6.1.4.1.318.1.1.26.9.4.3.1.7",
+                "total_oids": ["iso.3.6.1.4.1.318.1.1.12.1.16.0"],
+                "unit": "W"
+              }
+            }
+          }],
+          "type": "pdu",
+          "uid": "clustera-pdu4",
+          "vendor": "APC"
+        }
+      },
+      "compilation_server": false,
+      "description": "Grid5000 Fakesite site",
+      "email_contact": "support-staff@lists.grid5000.fr",
+      "frontend_ip": "172.16.79.101",
+      "g5ksubnet": {
+        "gateway": "10.147.255.254",
+        "network": "10.144.0.0/14"
+      },
+      "latitude": 48.7,
+      "location": "Fakesite, France",
+      "longitude": 6.2,
+      "name": "Fakesite",
+      "production": true,
+      "renater_ip": "192.168.4.14",
+      "security_contact": "support-staff@lists.grid5000.fr",
+      "storage5k": false,
+      "sys_admin_contact": "support-staff@lists.grid5000.fr",
+      "type": "site",
+      "uid": "fakesite",
+      "user_support_contact": "support-staff@lists.grid5000.fr",
+      "virt_ip_range": "10.144.0.0/14",
+      "web": "http://www.grid5000.fr/w/Fakesite:Home"
+    }
+  },
+  "network_equipments": {
+    "renater-lyon": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-paris"
+        }, {
+          "uid": "renater-sophia"
+        }, {
+          "uid": "renater-grenoble"
+        }, {
+          "uid": "renater-nantes"
+        }, {
+          "kind": "router",
+          "site_uid": "lyon",
+          "uid": "gw-lyon"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-lyon",
+      "weathermap": {}
+    },
+    "renater-grenoble": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-lyon"
+        }, {
+          "kind": "router",
+          "site_uid": "grenoble",
+          "uid": "gw-grenoble"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-grenoble",
+      "weathermap": {}
+    },
+    "renater-nancy": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-luxembourg"
+        }, {
+          "uid": "renater-paris"
+        }, {
+          "kind": "router",
+          "site_uid": "nancy",
+          "uid": "gw-nancy"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-nancy",
+      "weathermap": {}
+    },
+    "renater-luxembourg": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-nancy"
+        }, {
+          "kind": "router",
+          "site_uid": "luxembourg",
+          "uid": "gw-luxembourg"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-luxembourg",
+      "weathermap": {}
+    },
+    "renater-sophia": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-lyon"
+        }, {
+          "kind": "router",
+          "site_uid": "sophia",
+          "uid": "gw-sophia"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-sophia",
+      "weathermap": {}
+    },
+    "renater-paris": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-lille"
+        }, {
+          "uid": "renater-lyon"
+        }, {
+          "uid": "renater-nancy"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-paris",
+      "weathermap": {}
+    },
+    "renater-rennes": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-nantes"
+        }, {
+          "kind": "router",
+          "site_uid": "rennes",
+          "uid": "gw-rennes"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-rennes",
+      "weathermap": {}
+    },
+    "renater-nantes": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-lyon"
+        }, {
+          "uid": "renater-rennes"
+        }, {
+          "kind": "router",
+          "site_uid": "nantes",
+          "uid": "gw-nantes"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-nantes",
+      "weathermap": {}
+    },
+    "renater-lille": {
+      "kind": "virtual",
+      "linecards": [{
+        "ports": [{
+          "uid": "renater-paris"
+        }, {
+          "kind": "router",
+          "site_uid": "lille",
+          "uid": "gw-lille"
+        }],
+        "rate": 10000000000
+      }],
+      "type": "network_equipment",
+      "uid": "renater-lille",
+      "weathermap": {}
+    }
+  },
+  "type": "grid",
+  "uid": "grid5000"
+}
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_bad_best_effort_property.json b/spec/input/data_bad_best_effort_property.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_bad_best_effort_property.json
rename to spec/input/data_bad_best_effort_property.json
diff --git a/spec/input/data_contiguous-grouped-by-threads_cpusets.json b/spec/input/data_contiguous-grouped-by-threads_cpusets.json
new file mode 100644
index 0000000000000000000000000000000000000000..a0cb4ca6059fac9303305b8259be5513397cdfe0
--- /dev/null
+++ b/spec/input/data_contiguous-grouped-by-threads_cpusets.json
@@ -0,0 +1,2821 @@
+{
+  "sites": {
+    "fakesite": {
+      "clusters": {
+        "clustera": {
+          "nodes": {
+            "clustera-1": {
+              "architecture": {
+                "cpu_core_numbering": "contiguous-grouped-by-threads",
+                "nb_cores": 20,
+                "nb_procs": 2,
+                "nb_threads": 160,
+                "platform_type": "ppc64le"
+              },
+              "bios": {
+                "vendor": "IBM",
+                "version": "garrison-OP8_v1.12_2.96"
+              },
+              "bmc_version": "2.13",
+              "chassis": {
+                "manufacturer": "IBM",
+                "name": "8335-GTB",
+                "serial": "21089EA"
+              },
+              "exotic": true,
+              "gpu_devices": {
+                "nvidia0": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia0",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                },
+                "nvidia1": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia1",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                },
+                "nvidia2": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia2",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                },
+                "nvidia3": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia3",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                }
+              },
+              "kavlan": {
+                "eth0": {
+                  "kavlan-1": "192.168.195.1",
+                  "kavlan-11": "10.7.199.1",
+                  "kavlan-12": "10.11.199.1",
+                  "kavlan-13": "10.15.199.1",
+                  "kavlan-14": "10.19.199.1",
+                  "kavlan-16": "10.27.199.1",
+                  "kavlan-18": "10.35.199.1",
+                  "kavlan-2": "192.168.211.1",
+                  "kavlan-20": "10.43.199.1",
+                  "kavlan-21": "10.47.199.1",
+                  "kavlan-3": "192.168.227.1",
+                  "kavlan-4": "10.4.3.1",
+                  "kavlan-5": "10.4.67.1",
+                  "kavlan-6": "10.4.131.1",
+                  "kavlan-7": "10.4.195.1",
+                  "kavlan-8": "10.5.3.1",
+                  "kavlan-9": "10.5.67.1"
+                }
+              },
+              "kavlan6": {
+                "eth0": {
+                  "kavlan-1": "2001:660:4406:180:9::1",
+                  "kavlan-11": "2001:660:4406:1a0:109::1",
+                  "kavlan-12": "2001:660:4406:2a0:109::1",
+                  "kavlan-13": "2001:660:4406:4a0:109::1",
+                  "kavlan-14": "2001:660:4406:5a0:109::1",
+                  "kavlan-16": "2001:660:4406:7a0:109::1",
+                  "kavlan-18": "2001:660:4406:8a0:109::1",
+                  "kavlan-2": "2001:660:4406:181:9::1",
+                  "kavlan-20": "2001:660:4406:3a0:109::1",
+                  "kavlan-21": "2001:660:4406:6a0:109::1",
+                  "kavlan-3": "2001:660:4406:182:9::1",
+                  "kavlan-4": "2001:660:4406:190:9::1",
+                  "kavlan-5": "2001:660:4406:191:9::1",
+                  "kavlan-6": "2001:660:4406:192:9::1",
+                  "kavlan-7": "2001:660:4406:193:9::1",
+                  "kavlan-8": "2001:660:4406:194:9::1",
+                  "kavlan-9": "2001:660:4406:195:9::1"
+                }
+              },
+              "main_memory": {
+                "ram_size": 137438953472
+              },
+              "monitoring": {
+                "wattmeter": "false"
+              },
+              "network_adapters": [
+                {
+                  "bridged": true,
+                  "device": "eth0",
+                  "driver": "bnx2x",
+                  "enabled": true,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "ip": "172.16.24.1",
+                  "ip6": "2001:660:4406:100:9::1",
+                  "kavlan": true,
+                  "mac": "98:be:94:68:1e:54",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": true,
+                  "mounted": true,
+                  "name": "enP1p1s0f0",
+                  "network_address": "drac-1.grenoble.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": "gw",
+                  "switch_port": "ethernet1/1/37:1",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth1",
+                  "driver": "bnx2x",
+                  "enabled": false,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "98:be:94:68:1e:55",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP1p1s0f1",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth2",
+                  "driver": "bnx2x",
+                  "enabled": false,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "98:be:94:68:1e:56",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP1p1s0f2",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth3",
+                  "driver": "bnx2x",
+                  "enabled": false,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "98:be:94:68:1e:57",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP1p1s0f3",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth4",
+                  "driver": "tg3",
+                  "enabled": true,
+                  "firmware_version": "5719-v1.43 NCSI v1.3.12.0",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "70:e2:84:14:15:6e",
+                  "management": false,
+                  "model": "NetXtreme BCM5719 Gigabit Ethernet PCIe",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP9p7s0f0",
+                  "rate": 1000000000,
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth5",
+                  "driver": "tg3",
+                  "enabled": false,
+                  "firmware_version": "5719-v1.43 NCSI v1.3.12.0",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "70:e2:84:14:15:6f",
+                  "management": false,
+                  "model": "NetXtreme BCM5719 Gigabit Ethernet PCIe",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP9p7s0f1",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "ib0",
+                  "driver": "mlx5_core",
+                  "enabled": true,
+                  "firmware_version": "12.17.2010",
+                  "guid": "0x7cfe900300814cac",
+                  "interface": "InfiniBand",
+                  "ip": "172.18.24.1",
+                  "kavlan": false,
+                  "mac": "00:00:00:66:fe:80:00:00:00:00:00:00:7c:fe:90:03:00:81:4c:ac",
+                  "management": false,
+                  "model": "MT27700 Family [ConnectX-4]",
+                  "mountable": true,
+                  "mounted": true,
+                  "name": "ib0",
+                  "netmask": "255.255.240.0",
+                  "network_address": "drac-1-ib0.grenoble.grid5000.fr",
+                  "rate": 100000000000,
+                  "vendor": "Mellanox Technologies"
+                },
+                {
+                  "device": "ib1",
+                  "driver": "mlx5_core",
+                  "enabled": true,
+                  "firmware_version": "12.17.2010",
+                  "guid": "0x7cfe900300814cad",
+                  "interface": "InfiniBand",
+                  "kavlan": false,
+                  "mac": "00:00:00:66:fe:80:00:00:00:00:00:00:7c:fe:90:03:00:81:4c:ad",
+                  "management": false,
+                  "model": "MT27700 Family [ConnectX-4]",
+                  "mountable": true,
+                  "mounted": false,
+                  "name": "ib1",
+                  "network_address": "drac-1-ib1.grenoble.grid5000.fr",
+                  "rate": 100000000000,
+                  "vendor": "Mellanox Technologies"
+                },
+                {
+                  "device": "bmc",
+                  "enabled": true,
+                  "interface": "Ethernet",
+                  "ip": "172.17.24.1",
+                  "kavlan": false,
+                  "mac": "70:e2:84:14:15:6d",
+                  "management": true,
+                  "mountable": false,
+                  "mounted": false,
+                  "network_address": "drac-1-bmc.grenoble.grid5000.fr"
+                }
+              ],
+              "operating_system": {
+                "cstate_driver": "powernv_idle",
+                "cstate_governor": "menu",
+                "ht_enabled": true,
+                "pstate_driver": "powernv-cpufreq",
+                "pstate_governor": "ondemand",
+                "turboboost_enabled": false
+              },
+              "performance": {
+                "core_flops": 32000000000,
+                "node_flops": 640000000000
+              },
+              "processor": {
+                "cache_l1": null,
+                "cache_l1d": 65536,
+                "cache_l1i": 32768,
+                "cache_l2": 524288,
+                "cache_l3": 8388608,
+                "clock_speed": 4000000000,
+                "ht_capable": true,
+                "instruction_set": "ppc64le",
+                "microarchitecture": "POWER8",
+                "microcode": "unknown",
+                "model": "POWER8NVL",
+                "other_description": "POWER8NVL, altivec supported",
+                "vendor": "IBM",
+                "version": 1.0
+              },
+              "sensors": {
+              },
+              "software": {
+                "forced-deployment-timestamp": 202007300948,
+                "postinstall-version": "1.2021041500",
+                "standard-environment": "debian10-ppc64-std"
+              },
+              "storage_devices": [
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x5000c5008c0fa4a5",
+                  "by_path": "/dev/disk/by-path/pci-0009:04:00.0-ata-1",
+                  "device": "sda",
+                  "firmware_version": "BE33",
+                  "interface": "SATA",
+                  "model": "ST1000NX0313",
+                  "size": 1000204886016,
+                  "storage": "HDD",
+                  "vendor": "Seagate"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x5000c5008c18078e",
+                  "by_path": "/dev/disk/by-path/pci-0009:04:00.0-ata-2",
+                  "device": "sdb",
+                  "firmware_version": "BE33",
+                  "interface": "SATA",
+                  "model": "ST1000NX0313",
+                  "size": 1000204886016,
+                  "storage": "HDD",
+                  "vendor": "Seagate"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 0,
+                "queues": [
+                  "default",
+                  "admin"
+                ]
+              },
+              "type": "node",
+              "uid": "drac-1"
+            },
+            "clustera-2": {
+              "architecture": {
+                "cpu_core_numbering": "contiguous-grouped-by-threads",
+                "nb_cores": 20,
+                "nb_procs": 2,
+                "nb_threads": 160,
+                "platform_type": "ppc64le"
+              },
+              "bios": {
+                "vendor": "IBM",
+                "version": "garrison-OP8_v1.12_2.96"
+              },
+              "bmc_version": "2.13",
+              "chassis": {
+                "manufacturer": "IBM",
+                "name": "8335-GTB",
+                "serial": "2108A0A"
+              },
+              "exotic": true,
+              "gpu_devices": {
+                "nvidia0": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia0",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                },
+                "nvidia1": {
+                  "cpu_affinity": 0,
+                  "device": "/dev/nvidia1",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                },
+                "nvidia2": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia2",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                },
+                "nvidia3": {
+                  "cpu_affinity": 1,
+                  "device": "/dev/nvidia3",
+                  "memory": 16280000000,
+                  "model": "Tesla P100-SXM2-16GB",
+                  "power_default_limit": "300.00 W",
+                  "vbios_version": "86.00.26.00.02",
+                  "vendor": "Nvidia"
+                }
+              },
+              "kavlan": {
+                "eth0": {
+                  "kavlan-1": "192.168.195.2",
+                  "kavlan-11": "10.7.199.2",
+                  "kavlan-12": "10.11.199.2",
+                  "kavlan-13": "10.15.199.2",
+                  "kavlan-14": "10.19.199.2",
+                  "kavlan-16": "10.27.199.2",
+                  "kavlan-18": "10.35.199.2",
+                  "kavlan-2": "192.168.211.2",
+                  "kavlan-20": "10.43.199.2",
+                  "kavlan-21": "10.47.199.2",
+                  "kavlan-3": "192.168.227.2",
+                  "kavlan-4": "10.4.3.2",
+                  "kavlan-5": "10.4.67.2",
+                  "kavlan-6": "10.4.131.2",
+                  "kavlan-7": "10.4.195.2",
+                  "kavlan-8": "10.5.3.2",
+                  "kavlan-9": "10.5.67.2"
+                }
+              },
+              "kavlan6": {
+                "eth0": {
+                  "kavlan-1": "2001:660:4406:180:9::2",
+                  "kavlan-11": "2001:660:4406:1a0:109::2",
+                  "kavlan-12": "2001:660:4406:2a0:109::2",
+                  "kavlan-13": "2001:660:4406:4a0:109::2",
+                  "kavlan-14": "2001:660:4406:5a0:109::2",
+                  "kavlan-16": "2001:660:4406:7a0:109::2",
+                  "kavlan-18": "2001:660:4406:8a0:109::2",
+                  "kavlan-2": "2001:660:4406:181:9::2",
+                  "kavlan-20": "2001:660:4406:3a0:109::2",
+                  "kavlan-21": "2001:660:4406:6a0:109::2",
+                  "kavlan-3": "2001:660:4406:182:9::2",
+                  "kavlan-4": "2001:660:4406:190:9::2",
+                  "kavlan-5": "2001:660:4406:191:9::2",
+                  "kavlan-6": "2001:660:4406:192:9::2",
+                  "kavlan-7": "2001:660:4406:193:9::2",
+                  "kavlan-8": "2001:660:4406:194:9::2",
+                  "kavlan-9": "2001:660:4406:195:9::2"
+                }
+              },
+              "main_memory": {
+                "ram_size": 137438953472
+              },
+              "monitoring": {
+                "wattmeter": "false"
+              },
+              "network_adapters": [
+                {
+                  "bridged": true,
+                  "device": "eth0",
+                  "driver": "bnx2x",
+                  "enabled": true,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "ip": "172.16.24.2",
+                  "ip6": "2001:660:4406:100:9::2",
+                  "kavlan": true,
+                  "mac": "98:be:94:68:72:34",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": true,
+                  "mounted": true,
+                  "name": "enP1p1s0f0",
+                  "network_address": "drac-2.grenoble.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": "gw",
+                  "switch_port": "ethernet1/1/38:1",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth1",
+                  "driver": "bnx2x",
+                  "enabled": false,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "98:be:94:68:72:35",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP1p1s0f1",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth2",
+                  "driver": "bnx2x",
+                  "enabled": false,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "98:be:94:68:72:36",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP1p1s0f2",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth3",
+                  "driver": "bnx2x",
+                  "enabled": false,
+                  "firmware_version": "bc 7.10.4",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "98:be:94:68:72:37",
+                  "management": false,
+                  "model": "NetXtreme II BCM57800 1/10 Gigabit Ethernet",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP1p1s0f3",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth4",
+                  "driver": "tg3",
+                  "enabled": true,
+                  "firmware_version": "5719-v1.43 NCSI v1.3.12.0",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "70:e2:84:14:11:36",
+                  "management": false,
+                  "model": "NetXtreme BCM5719 Gigabit Ethernet PCIe",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP9p7s0f0",
+                  "rate": 1000000000,
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "eth5",
+                  "driver": "tg3",
+                  "enabled": false,
+                  "firmware_version": "5719-v1.43 NCSI v1.3.12.0",
+                  "interface": "Ethernet",
+                  "kavlan": false,
+                  "mac": "70:e2:84:14:11:37",
+                  "management": false,
+                  "model": "NetXtreme BCM5719 Gigabit Ethernet PCIe",
+                  "mountable": false,
+                  "mounted": false,
+                  "name": "enP9p7s0f1",
+                  "vendor": "Broadcom"
+                },
+                {
+                  "device": "ib0",
+                  "driver": "mlx5_core",
+                  "enabled": true,
+                  "firmware_version": "12.17.2010",
+                  "guid": "0x7cfe900300814a34",
+                  "interface": "InfiniBand",
+                  "ip": "172.18.24.2",
+                  "kavlan": false,
+                  "mac": "00:00:00:66:fe:80:00:00:00:00:00:00:7c:fe:90:03:00:81:4a:34",
+                  "management": false,
+                  "model": "MT27700 Family [ConnectX-4]",
+                  "mountable": true,
+                  "mounted": true,
+                  "name": "ib0",
+                  "netmask": "255.255.240.0",
+                  "network_address": "drac-2-ib0.grenoble.grid5000.fr",
+                  "rate": 100000000000,
+                  "vendor": "Mellanox Technologies"
+                },
+                {
+                  "device": "ib1",
+                  "driver": "mlx5_core",
+                  "enabled": true,
+                  "firmware_version": "12.17.2010",
+                  "guid": "0x7cfe900300814a35",
+                  "interface": "InfiniBand",
+                  "kavlan": false,
+                  "mac": "00:00:00:66:fe:80:00:00:00:00:00:00:7c:fe:90:03:00:81:4a:35",
+                  "management": false,
+                  "model": "MT27700 Family [ConnectX-4]",
+                  "mountable": true,
+                  "mounted": false,
+                  "name": "ib1",
+                  "network_address": "drac-2-ib1.grenoble.grid5000.fr",
+                  "rate": 100000000000,
+                  "vendor": "Mellanox Technologies"
+                },
+                {
+                  "device": "bmc",
+                  "enabled": true,
+                  "interface": "Ethernet",
+                  "ip": "172.17.24.2",
+                  "kavlan": false,
+                  "mac": "70:e2:84:14:11:35",
+                  "management": true,
+                  "mountable": false,
+                  "mounted": false,
+                  "network_address": "drac-2-bmc.grenoble.grid5000.fr"
+                }
+              ],
+              "operating_system": {
+                "cstate_driver": "powernv_idle",
+                "cstate_governor": "menu",
+                "ht_enabled": true,
+                "pstate_driver": "powernv-cpufreq",
+                "pstate_governor": "ondemand",
+                "turboboost_enabled": false
+              },
+              "performance": {
+                "core_flops": 32000000000,
+                "node_flops": 640000000000
+              },
+              "processor": {
+                "cache_l1": null,
+                "cache_l1d": 65536,
+                "cache_l1i": 32768,
+                "cache_l2": 524288,
+                "cache_l3": 8388608,
+                "clock_speed": 4000000000,
+                "ht_capable": true,
+                "instruction_set": "ppc64le",
+                "microarchitecture": "POWER8",
+                "microcode": "unknown",
+                "model": "POWER8NVL",
+                "other_description": "POWER8NVL, altivec supported",
+                "vendor": "IBM",
+                "version": 1.0
+              },
+              "sensors": {
+              },
+              "software": {
+                "forced-deployment-timestamp": 202007300948,
+                "postinstall-version": "1.2021041500",
+                "standard-environment": "debian10-ppc64-std"
+              },
+              "storage_devices": [
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x5000c500811069a0",
+                  "by_path": "/dev/disk/by-path/pci-0009:04:00.0-ata-1",
+                  "device": "sda",
+                  "firmware_version": "BE33",
+                  "interface": "SATA",
+                  "model": "ST1000NX0313",
+                  "size": 1000204886016,
+                  "storage": "HDD",
+                  "vendor": "Seagate"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x5000c50081107893",
+                  "by_path": "/dev/disk/by-path/pci-0009:04:00.0-ata-2",
+                  "device": "sdb",
+                  "firmware_version": "BE33",
+                  "interface": "SATA",
+                  "model": "ST1000NX0313",
+                  "size": 1000204886016,
+                  "storage": "HDD",
+                  "vendor": "Seagate"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 0,
+                "queues": [
+                  "default",
+                  "admin"
+                ]
+              },
+              "type": "node",
+              "uid": "drac-2"
+            }
+          },
+          "created_at": "Mon, 05 Oct 2020 00:00:00 GMT",
+          "exotic": true,
+          "kavlan": true,
+          "metrics": [
+            {
+              "description": "Input packet counter for the network device port connected to the node",
+              "name": "network_ifacein_packets_total",
+              "period": 10000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Output packet counter for the network device port connected to the node",
+              "name": "network_ifaceout_packets_total",
+              "period": 10000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Input counter of discarded packets for the network device port connected to the node",
+              "name": "network_ifacein_packets_discard_total",
+              "period": 10000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Output counter of discarded packets for the network device port connected to the node",
+              "name": "network_ifaceout_packets_discard_total",
+              "period": 10000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Input counter of packet errors for the network device port connected to the node",
+              "name": "network_ifacein_packets_error_total",
+              "period": 10000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Output counter of packet errors for the network device port connected to the node",
+              "name": "network_ifaceout_packets_error_total",
+              "period": 10000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Front node ambient temperature reported by BMC, in celsius",
+              "name": "bmc_temp_ambient_celsius",
+              "period": 5000,
+              "source": {
+                "id": 175,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of node reported by BMC, in watt",
+              "name": "bmc_node_power_watt",
+              "period": 5000,
+              "source": {
+                "id": 212,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of CPU Diode 1 reported by BMC, in celsius",
+              "labels": {
+                "cpu": "1"
+              },
+              "name": "bmc_cpudiode_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 2,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of CPU Diode 2 reported by BMC, in celsius",
+              "labels": {
+                "cpu": "2"
+              },
+              "name": "bmc_cpudiode_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 3,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of CPU1 reported by BMC, in celsius",
+              "labels": {
+                "cpu": "1"
+              },
+              "name": "bmc_cpu_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 61,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of CPU2 reported by BMC, in celsius",
+              "labels": {
+                "cpu": "2"
+              },
+              "name": "bmc_cpu_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 62,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM1 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "1"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 63,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM2 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "2"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 64,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM3 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "3"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 65,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM4 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "4"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 66,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM5 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "5"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 68,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM6 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "6"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 69,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM7 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "7"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 70,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM8 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "8"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 71,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM9 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "9"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 73,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM10 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "10"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 74,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM11 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "11"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 75,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM12 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "12"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 76,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM13 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "13"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 78,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM14 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "14"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 79,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM15 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "15"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 80,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM16 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "16"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 81,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM17 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "17"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 83,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM18 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "18"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 84,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM19 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "19"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 85,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM20 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "20"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 86,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM21 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "21"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 88,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM22 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "22"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 89,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM23 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "23"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 90,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM24 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "24"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 91,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM25 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "25"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 93,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM26 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "26"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 94,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM27 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "27"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 95,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM28 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "28"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 96,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM29 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "29"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 98,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM30 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "30"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 99,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM31 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "31"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 100,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of DIMM32 reported by BMC, in celsius",
+              "labels": {
+                "dimm": "32"
+              },
+              "name": "bmc_dimm_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 101,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of Fan reported by BMC, in watt",
+              "name": "bmc_fan_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 103,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of Mem Proc1 reported by BMC, in watt",
+              "labels": {
+                "cpu": "1"
+              },
+              "name": "bmc_mem_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 104,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of Mem Proc2 reported by BMC, in watt",
+              "labels": {
+                "cpu": "2"
+              },
+              "name": "bmc_mem_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 105,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of PCIE Proc1 reported by BMC, in watt",
+              "labels": {
+                "cpu": "1"
+              },
+              "name": "bmc_pcie_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 106,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of Mem Cache reported by BMC, in watt",
+              "name": "bmc_memcache_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 107,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of Proc1 reported by BMC, in watt",
+              "labels": {
+                "cpu": "1"
+              },
+              "name": "bmc_cpu_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 108,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Voltage of CPU VDD reported by BMC, in volt",
+              "labels": {
+                "voltage": "cpuvdd"
+              },
+              "name": "bmc_voltage_volt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 207,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Current of CPU VDD reported by BMC, in amp",
+              "labels": {
+                "current": "cpuvdd"
+              },
+              "name": "bmc_current_amp",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 208,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of Proc2 reported by BMC, in watt",
+              "labels": {
+                "cpu": "2"
+              },
+              "name": "bmc_cpu_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 210,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of PCIE Proc2 reported by BMC, in watt",
+              "labels": {
+                "cpu": "2"
+              },
+              "name": "bmc_pcie_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 211,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Power consumption of GPU reported by BMC, in watt",
+              "name": "bmc_gpu_power_watt",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 213,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of GPU 1 reported by BMC, in celsius",
+              "labels": {
+                "gpu": "1"
+              },
+              "name": "bmc_gpu_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 216,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of GPU 2 reported by BMC, in celsius",
+              "labels": {
+                "gpu": "2"
+              },
+              "name": "bmc_gpu_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 217,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of GPU 3 reported by BMC, in celsius",
+              "labels": {
+                "gpu": "3"
+              },
+              "name": "bmc_gpu_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 218,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of GPU 4 reported by BMC, in celsius",
+              "labels": {
+                "gpu": "4"
+              },
+              "name": "bmc_gpu_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 219,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Speed of Fan 1 reported by BMC, in rpm",
+              "labels": {
+                "fan": "1"
+              },
+              "name": "bmc_fan_speed_rpm",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 227,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Speed of Fan 2 reported by BMC, in rpm",
+              "labels": {
+                "fan": "2"
+              },
+              "name": "bmc_fan_speed_rpm",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 228,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Speed of Fan 3 reported by BMC, in rpm",
+              "labels": {
+                "fan": "3"
+              },
+              "name": "bmc_fan_speed_rpm",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 229,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Speed of Fan 4 reported by BMC, in rpm",
+              "labels": {
+                "fan": "4"
+              },
+              "name": "bmc_fan_speed_rpm",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 230,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of CPU 1 VDD reported by BMC, in celsius",
+              "labels": {
+                "cpu": "1"
+              },
+              "name": "bmc_vdd_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 251,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Temperature of CPU 2 VDD reported by BMC, in celsius",
+              "labels": {
+                "cpu": "2"
+              },
+              "name": "bmc_vdd_temp_celsius",
+              "optional_period": 5000,
+              "period": 0,
+              "source": {
+                "id": 252,
+                "protocol": "ipmisensor"
+              }
+            },
+            {
+              "description": "Default subset of metrics from Prometheus Node Exporter",
+              "name": "prom_default_metrics",
+              "optional_period": 15000,
+              "period": 0,
+              "source": {
+                "id": [
+                  "node_boot_time_seconds",
+                  "node_cpu_frequency_hertz",
+                  "node_cpu_seconds_total",
+                  "node_filesystem_free_bytes",
+                  "node_filesystem_size_bytes",
+                  "node_load1",
+                  "node_load15",
+                  "node_load5",
+                  "node_memory_Buffers_bytes",
+                  "node_memory_Cached_bytes",
+                  "node_memory_MemAvailable_bytes",
+                  "node_memory_MemFree_bytes",
+                  "node_memory_MemTotal_bytes",
+                  "node_memory_Shmem_bytes",
+                  "node_memory_SwapFree_bytes",
+                  "node_memory_SwapTotal_bytes",
+                  "node_network_receive_bytes_total",
+                  "node_network_receive_packets_total",
+                  "node_network_transmit_bytes_total",
+                  "node_network_transmit_packets_total",
+                  "node_procs_blocked",
+                  "node_procs_running",
+                  "kwollect_custom"
+                ],
+                "port": 9100,
+                "protocol": "prometheus"
+              }
+            },
+            {
+              "description": "All metrics from Prometheus Node Exporter",
+              "name": "prom_all_metrics",
+              "optional_period": 15000,
+              "period": 0,
+              "source": {
+                "port": 9100,
+                "protocol": "prometheus"
+              }
+            },
+            {
+              "description": "Default subset of metrics from Prometheus Nvidia DCGM Exporter",
+              "name": "prom_nvgpu_default_metrics",
+              "optional_period": 15000,
+              "period": 0,
+              "source": {
+                "id": [
+                  "DCGM_FI_DEV_SM_CLOCK",
+                  "DCGM_FI_DEV_MEM_CLOCK",
+                  "DCGM_FI_DEV_GPU_TEMP",
+                  "DCGM_FI_DEV_POWER_USAGE",
+                  "DCGM_FI_DEV_GPU_UTIL",
+                  "DCGM_FI_DEV_MEM_COPY_UTIL"
+                ],
+                "port": 9400,
+                "protocol": "prometheus"
+              }
+            },
+            {
+              "description": "All metrics from Prometheus Nvidia DCGM Exporter",
+              "name": "prom_nvgpu_all_metrics",
+              "optional_period": 15000,
+              "period": 0,
+              "source": {
+                "port": 9400,
+                "protocol": "prometheus"
+              }
+            },
+            {
+              "description": "Input byte counter for the network device port",
+              "labels": {
+                "interface": "eth0"
+              },
+              "name": "network_ifacein_bytes_total",
+              "period": 1000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            },
+            {
+              "description": "Output byte counter for the network device port",
+              "labels": {
+                "interface": "eth0"
+              },
+              "name": "network_ifaceout_bytes_total",
+              "period": 1000,
+              "source": {
+                "protocol": "network_equipment"
+              }
+            }
+          ],
+          "model": "IBM PowerNV S822LC (8335-GTB)",
+          "queues": [
+            "default",
+            "admin"
+          ],
+          "type": "cluster",
+          "uid": "clustera"
+        }
+      },
+      "pdus": {
+        "wattmetre1": {
+          "ip": "172.16.31.9",
+          "metrics": [
+            {
+              "description": "Power consumption per outlet reported by wattmetre, in watt",
+              "name": "wattmetre_power_watt",
+              "optional_period": 20,
+              "period": 1000,
+              "source": {
+                "protocol": "wattmetre"
+              }
+            }
+          ],
+          "model": "",
+          "ports": {
+            "0": "yeti-1",
+            "1": "yeti-1",
+            "10": "troll-3",
+            "11": "troll-4",
+            "2": "yeti-2",
+            "3": "yeti-2",
+            "4": "yeti-3",
+            "5": "yeti-3",
+            "6": "yeti-4",
+            "7": "yeti-4",
+            "8": "troll-1",
+            "9": "troll-2"
+          },
+          "sensors": [
+            {
+              "power": {
+                "per_outlets": true,
+                "resolution": 1,
+                "wattmetre": {
+                  "available": true,
+                  "unit": "W",
+                  "www": {
+                    "url": "http://digwatt.grenoble.grid5000.fr/GetWatts-json.php"
+                  }
+                }
+              }
+            }
+          ],
+          "type": "pdu",
+          "uid": "wattmetre1",
+          "vendor": "OmegaWatt"
+        }
+      },
+      "servers": {
+        "dignfs": {
+          "alias": [
+            "nfs",
+            "public",
+            "home-g5k",
+            "ntp",
+            "modules",
+            "storage1"
+          ],
+          "group_storage": {
+            "name": "storage1",
+            "rate": 50000000000,
+            "size": 55000000000000
+          },
+          "kind": "physical",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.12"
+            },
+            "bmc": {
+              "ip": "172.17.30.12",
+              "mac": "2C:EA:7F:42:45:35"
+            },
+            "default": {
+              "ip": "172.16.31.12"
+            }
+          },
+          "serial": "57JV173",
+          "type": "server",
+          "uid": "dignfs",
+          "warranty": "2025-10-06"
+        },
+        "syslog": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.115"
+            }
+          },
+          "type": "server",
+          "uid": "syslog"
+        },
+        "kavlan-1": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.119"
+            }
+          },
+          "type": "server",
+          "uid": "kavlan-1"
+        },
+        "digxp": {
+          "alias": null,
+          "kind": "physical",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.10"
+            },
+            "bmc": {
+              "ip": "172.17.30.10"
+            },
+            "default": {
+              "ip": "172.16.31.10"
+            }
+          },
+          "serial": "n/a",
+          "type": "server",
+          "uid": "digxp",
+          "warranty": "n/a"
+        },
+        "conman": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.123"
+            }
+          },
+          "type": "server",
+          "uid": "conman"
+        },
+        "dns": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.110"
+            }
+          },
+          "type": "server",
+          "uid": "dns"
+        },
+        "api-server-devel": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.108"
+            }
+          },
+          "type": "server",
+          "uid": "api-server-devel"
+        },
+        "kadeploy-devel": {
+          "alias": [
+            "kadeploy-server-devel",
+            "deploy-devel"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.124"
+            },
+            "default": {
+              "ip": "172.16.31.124"
+            }
+          },
+          "type": "server",
+          "uid": "kadeploy-devel"
+        },
+        "kwollect": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.127"
+            }
+          },
+          "type": "server",
+          "uid": "kwollect"
+        },
+        "kavlan-2": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.120"
+            }
+          },
+          "type": "server",
+          "uid": "kavlan-2"
+        },
+        "ldap": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.112"
+            }
+          },
+          "type": "server",
+          "uid": "ldap"
+        },
+        "digarm": {
+          "alias": null,
+          "kind": "physical",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.11"
+            }
+          },
+          "serial": "n/a",
+          "type": "server",
+          "uid": "digarm",
+          "warranty": "n/a"
+        },
+        "oar": {
+          "alias": [
+            "oar-server",
+            "oardb"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.104"
+            }
+          },
+          "type": "server",
+          "uid": "oar"
+        },
+        "fgrenoble": {
+          "alias": [
+            "frontend",
+            "oar-api"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.101"
+            },
+            "default": {
+              "ip": "172.16.31.101"
+            }
+          },
+          "type": "server",
+          "uid": "fgrenoble"
+        },
+        "mysql": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.103"
+            }
+          },
+          "type": "server",
+          "uid": "mysql"
+        },
+        "puppet6": {
+          "alias": [
+            "puppet"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.116"
+            }
+          },
+          "type": "server",
+          "uid": "puppet6"
+        },
+        "kavlan-3": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.121"
+            }
+          },
+          "type": "server",
+          "uid": "kavlan-3"
+        },
+        "kavlan": {
+          "alias": [
+            "kavlan-dhcp"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.118"
+            }
+          },
+          "type": "server",
+          "uid": "kavlan"
+        },
+        "dhcp": {
+          "kind": "virtual",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.109"
+            },
+            "default": {
+              "ip": "172.16.31.109"
+            }
+          },
+          "type": "server",
+          "uid": "dhcp"
+        },
+        "dighyp2": {
+          "alias": [
+
+          ],
+          "kind": "physical",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.8"
+            },
+            "bmc": {
+              "ip": "172.17.30.8",
+              "mac": "D0:94:66:1E:32:47"
+            },
+            "default": {
+              "ip": "172.16.31.8",
+              "mac": "D0:94:66:1E:32:43"
+            }
+          },
+          "serial": "5SQY4M2",
+          "type": "server",
+          "uid": "dighyp2",
+          "warranty": "2024-10-19"
+        },
+        "guix": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.128"
+            }
+          },
+          "type": "server",
+          "uid": "guix"
+        },
+        "ganglia": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.111"
+            }
+          },
+          "type": "server",
+          "uid": "ganglia"
+        },
+        "api-proxy": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.106"
+            }
+          },
+          "type": "server",
+          "uid": "api-proxy"
+        },
+        "digwatt": {
+          "alias": [
+            "wattmetre"
+          ],
+          "kind": "physical",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.9"
+            },
+            "bmc": {
+              "ip": "172.17.30.9"
+            },
+            "default": {
+              "ip": "172.16.31.9"
+            }
+          },
+          "serial": "72NMNR2",
+          "type": "server",
+          "uid": "digwatt",
+          "warranty": "2023-08-28"
+        },
+        "nat": {
+          "alias": [
+            "access"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.100"
+            }
+          },
+          "type": "server",
+          "uid": "nat"
+        },
+        "dighyp1": {
+          "alias": [
+            "adminfront",
+            "af"
+          ],
+          "kind": "physical",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.7"
+            },
+            "bmc": {
+              "ip": "172.17.30.7",
+              "mac": "D0:94:66:1E:38:4C"
+            },
+            "default": {
+              "ip": "172.16.31.7",
+              "mac": "D0:94:66:1E:38:48"
+            }
+          },
+          "serial": "5SS15M2",
+          "type": "server",
+          "uid": "dighyp1",
+          "warranty": "2024-10-19"
+        },
+        "mail": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.125"
+            }
+          },
+          "type": "server",
+          "uid": "mail"
+        },
+        "kadeploy": {
+          "alias": [
+            "kadeploy-server"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.102"
+            },
+            "default": {
+              "ip": "172.16.31.102"
+            }
+          },
+          "type": "server",
+          "uid": "kadeploy"
+        },
+        "mu2": {
+          "alias": [
+            "digitalis"
+          ],
+          "kind": "virtual",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.152"
+            },
+            "default": {
+              "ip": "172.16.31.152"
+            }
+          },
+          "type": "server",
+          "uid": "mu2"
+        },
+        "digsed": {
+          "alias": [
+
+          ],
+          "kind": "physical",
+          "network_adapters": {
+            "adm": {
+              "ip": "172.17.31.4"
+            },
+            "bmc": {
+              "ip": "172.17.30.4"
+            },
+            "default": {
+              "ip": "172.16.31.4"
+            }
+          },
+          "serial": "8GPPJ32",
+          "type": "server",
+          "uid": "digsed",
+          "warranty": "2021-12-06"
+        },
+        "supervision2": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.156"
+            }
+          },
+          "type": "server",
+          "uid": "supervision2"
+        },
+        "api-server-v3": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.122"
+            }
+          },
+          "type": "server",
+          "uid": "api-server-v3"
+        },
+        "www": {
+          "kind": "virtual",
+          "network_adapters": {
+            "default": {
+              "ip": "172.16.31.105"
+            }
+          },
+          "type": "server",
+          "uid": "www"
+        }
+      },
+      "network_equipments": {
+        "gw": {
+          "alias": [
+            "sw-imag",
+            "gw-grenoble"
+          ],
+          "backplane_bps": 6400000000000,
+          "channels": {
+            "port-channel10": {
+              "kind": "server",
+              "port": "port-channel10",
+              "rate": 50000000000,
+              "uid": "dignfs"
+            },
+            "port-channel100": {
+              "kind": "other",
+              "port": "port-channel100",
+              "rate": 40000000000,
+              "uid": "ACI-G5K-EXT"
+            },
+            "port-channel20": {
+              "kind": "server",
+              "port": "port-channel20",
+              "rate": 20000000000,
+              "uid": "digsed"
+            }
+          },
+          "ip": "172.16.31.254",
+          "kind": "router",
+          "linecards": [
+            {
+              "kavlan_pattern": "ethernet1/1/%PORT%:1",
+              "kind": "node",
+              "ports": [
+                {
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/1:1",
+                  "uid": "dahu-1"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/2:1",
+                  "uid": "dahu-2"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/3:1",
+                  "uid": "dahu-3"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/4:1",
+                  "uid": "dahu-4"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/5:1",
+                  "uid": "dahu-5"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/6:1",
+                  "uid": "dahu-6"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/7:1",
+                  "uid": "dahu-7"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/8:1",
+                  "uid": "dahu-8"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/9:1",
+                  "uid": "dahu-9"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/10:1",
+                  "uid": "dahu-10"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/11:1",
+                  "uid": "dahu-11"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/12:1",
+                  "uid": "dahu-12"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/13:1",
+                  "uid": "dahu-13"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/14:1",
+                  "uid": "dahu-14"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/15:1",
+                  "uid": "dahu-15"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/16:1",
+                  "uid": "dahu-16"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/17:1",
+                  "uid": "dahu-17"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/18:1",
+                  "uid": "dahu-18"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/19:1",
+                  "uid": "dahu-19"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/20:1",
+                  "uid": "dahu-20"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/21:1",
+                  "uid": "dahu-21"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/22:1",
+                  "uid": "dahu-22"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/23:1",
+                  "uid": "dahu-23"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/24:1",
+                  "uid": "dahu-24"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/25:1",
+                  "uid": "dahu-25"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/26:1",
+                  "uid": "dahu-26"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/27:1",
+                  "uid": "dahu-27"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/28:1",
+                  "uid": "dahu-28"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/29:1",
+                  "uid": "dahu-29"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/30:1",
+                  "uid": "dahu-30"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/31:1",
+                  "uid": "dahu-31"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/32:1",
+                  "uid": "dahu-32"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/33:1",
+                  "uid": "yeti-1"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/34:1",
+                  "uid": "yeti-2"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/35:1",
+                  "uid": "yeti-3"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/36:1",
+                  "uid": "yeti-4"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/37:1",
+                  "uid": "drac-1"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/38:1",
+                  "uid": "drac-2"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/39:1",
+                  "uid": "drac-3"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/40:1",
+                  "uid": "drac-4"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/41:1",
+                  "uid": "drac-5"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/42:1",
+                  "uid": "drac-6"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/43:1",
+                  "uid": "drac-7"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/44:1",
+                  "uid": "drac-8"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/45:1",
+                  "uid": "drac-9"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/46:1",
+                  "uid": "drac-10"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/47:1",
+                  "uid": "drac-11"
+                },
+                {
+                  "kind": "node",
+                  "port": "eth0",
+                  "snmp_name": "ethernet1/1/48:1",
+                  "uid": "drac-12"
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                },
+                {
+                  "kavlan_pattern": "ethernet1/1/%PORT%",
+                  "kind": "node",
+                  "port": "eth0",
+                  "rate": 25000000000,
+                  "snmp_name": "ethernet1/1/77",
+                  "uid": "troll-1"
+                },
+                {
+                  "kavlan_pattern": "ethernet1/1/%PORT%",
+                  "kind": "node",
+                  "port": "eth0",
+                  "rate": 25000000000,
+                  "snmp_name": "ethernet1/1/78",
+                  "uid": "troll-2"
+                },
+                {
+                  "kavlan_pattern": "ethernet1/1/%PORT%",
+                  "kind": "node",
+                  "port": "eth0",
+                  "rate": 25000000000,
+                  "snmp_name": "ethernet1/1/79",
+                  "uid": "troll-3"
+                },
+                {
+                  "kavlan_pattern": "ethernet1/1/%PORT%",
+                  "kind": "node",
+                  "port": "eth0",
+                  "rate": 25000000000,
+                  "snmp_name": "ethernet1/1/80",
+                  "uid": "troll-4"
+                },
+                {
+                },
+                {
+                },
+                {
+                  "kind": "channel",
+                  "rate": 25000000000,
+                  "snmp_name": "ethernet1/1/83",
+                  "uid": "port-channel10"
+                },
+                {
+                  "kind": "channel",
+                  "rate": 25000000000,
+                  "snmp_name": "ethernet1/1/84",
+                  "uid": "port-channel10"
+                },
+                {
+                  "kind": "channel",
+                  "snmp_name": "ethernet1/1/85:1",
+                  "uid": "port-channel20"
+                },
+                {
+                  "kind": "channel",
+                  "snmp_name": "ethernet1/1/86:1",
+                  "uid": "port-channel20"
+                },
+                {
+                  "kind": "server",
+                  "snmp_name": "ethernet1/1/87:1",
+                  "uid": "dighyp1"
+                },
+                {
+                  "kind": "server",
+                  "snmp_name": "ethernet1/1/88:1",
+                  "uid": "dighyp2"
+                },
+                {
+                  "kind": "server",
+                  "snmp_name": "ethernet1/1/89:1",
+                  "uid": "digwatt"
+                },
+                {
+                },
+                {
+                  "kind": "other",
+                  "snmp_name": "ethernet1/1/91:1",
+                  "uid": "ACI-G5K-INT"
+                },
+                {
+                  "kind": "channel",
+                  "snmp_name": "ethernet1/1/92:1",
+                  "uid": "port-channel100"
+                },
+                {
+                  "kind": "channel",
+                  "snmp_name": "ethernet1/1/93:1",
+                  "uid": "port-channel100"
+                },
+                {
+                  "kind": "channel",
+                  "snmp_name": "ethernet1/1/94:1",
+                  "uid": "port-channel100"
+                },
+                {
+                  "kind": "channel",
+                  "snmp_name": "ethernet1/1/95:1",
+                  "uid": "port-channel100"
+                },
+                {
+                  "kind": "backbone",
+                  "snmp_name": "ethernet1/1/96:1",
+                  "uid": "renater-grenoble"
+                }
+              ],
+              "rate": 10000000000,
+              "snmp_pattern": "ethernet1/1/%PORT%:1"
+            }
+          ],
+          "metrics": [
+            {
+              "description": "Input byte counter for the network device port",
+              "name": "network_ifacein_bytes_total",
+              "period": 1000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.10.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Output byte counter for the network device port",
+              "name": "network_ifaceout_bytes_total",
+              "period": 1000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.16.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Input packet counter for the network device port",
+              "name": "network_ifacein_packets_total",
+              "period": 10000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.11.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Output packet counter for the network device port",
+              "name": "network_ifaceout_packets_total",
+              "period": 10000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.17.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Input counter of discarded packets for the network device port",
+              "name": "network_ifacein_packets_discard_total",
+              "period": 10000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.13.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Output counter of discarded packets for the network device port",
+              "name": "network_ifaceout_packets_discard_total",
+              "period": 10000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.19.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Input counter of packet errors for the network device port",
+              "name": "network_ifacein_packets_error_total",
+              "period": 10000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.14.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            },
+            {
+              "description": "Output counter of packet errors for the network device port",
+              "name": "network_ifaceout_packets_error_total",
+              "period": 10000,
+              "source": {
+                "id": "1.3.6.1.2.1.2.2.1.20.{{ 1.3.6.1.2.1.2.2.1.2 == %SNMP_IFACE% }}",
+                "protocol": "snmp"
+              }
+            }
+          ],
+          "model": "Dell S5296F-ON",
+          "role": "production",
+          "serial": "H47D9Z2",
+          "site": "grenoble",
+          "snmp_community": "public",
+          "type": "network_equipment",
+          "uid": "gw",
+          "vlans": {
+            "vlan100": {
+              "addresses": [
+                "172.16.31.254"
+              ],
+              "administrative": true
+            },
+            "vlan101": {
+              "addresses": [
+                "172.17.31.254"
+              ]
+            },
+            "vlan500": {
+              "addresses": [
+                "192.168.4.15"
+              ]
+            },
+            "vlan701": {
+              "addresses": [
+                "192.168.192.0/20"
+              ],
+              "name": "kavlan-1"
+            },
+            "vlan702": {
+              "addresses": [
+                "192.168.208.0/20"
+              ],
+              "name": "kavlan-2"
+            },
+            "vlan703": {
+              "addresses": [
+                "192.168.224.0/20"
+              ],
+              "name": "kavlan-3"
+            },
+            "vlan704": {
+              "addresses": [
+                "10.4.0.0/18"
+              ],
+              "name": "kavlan-4"
+            },
+            "vlan705": {
+              "addresses": [
+                "10.4.64.0/18"
+              ],
+              "name": "kavlan-5"
+            },
+            "vlan706": {
+              "addresses": [
+                "10.4.128.0/18"
+              ],
+              "name": "kavlan-6"
+            },
+            "vlan707": {
+              "addresses": [
+                "10.4.192.0/18"
+              ],
+              "name": "kavlan-7"
+            },
+            "vlan708": {
+              "addresses": [
+                "10.5.0.0/18"
+              ],
+              "name": "kavlan-8"
+            },
+            "vlan709": {
+              "addresses": [
+                "10.5.64.0/18"
+              ],
+              "name": "kavlan-9"
+            },
+            "vlan711": {
+              "addresses": [
+                "10.7.192.0/18"
+              ],
+              "name": "kavlan-11"
+            }
+          },
+          "warranty": "2027-11-03"
+        }
+      },
+      "compilation_server": false,
+      "description": "Grid5000 Grenoble site",
+      "email_contact": "support-staff@lists.grid5000.fr",
+      "frontend_ip": "172.16.31.101",
+      "g5ksubnet": {
+        "gateway": "10.135.255.254",
+        "network": "10.132.0.0/14"
+      },
+      "ipv6": {
+        "prefix": "2001:660:4406:100::/56",
+        "site_global_kavlan": 11,
+        "site_index": 1
+      },
+      "kavlan_ip_range": "10.4.0.0/14",
+      "kavlans": {
+        "1": {
+          "gateway": "192.168.207.254",
+          "network": "192.168.192.0/20",
+          "network_ipv6": "2001:660:4406:180::/64"
+        },
+        "11": {
+          "gateway": "10.7.255.254",
+          "gateway_ipv6": "2001:660:4406:1a0:100:0:ffff:ffff",
+          "network": "10.7.192.0/18",
+          "network_ipv6": "2001:660:4406:1a0::/64"
+        },
+        "2": {
+          "gateway": "192.168.223.254",
+          "network": "192.168.208.0/20",
+          "network_ipv6": "2001:660:4406:181::/64"
+        },
+        "3": {
+          "gateway": "192.168.239.254",
+          "network": "192.168.224.0/20",
+          "network_ipv6": "2001:660:4406:182::/64"
+        },
+        "4": {
+          "gateway": "10.4.63.254",
+          "gateway_ipv6": "2001:660:4406:190::ffff:ffff",
+          "network": "10.4.0.0/18",
+          "network_ipv6": "2001:660:4406:190::/64"
+        },
+        "5": {
+          "gateway": "10.4.127.254",
+          "gateway_ipv6": "2001:660:4406:191::ffff:ffff",
+          "network": "10.4.64.0/18",
+          "network_ipv6": "2001:660:4406:191::/64"
+        },
+        "6": {
+          "gateway": "10.4.191.254",
+          "gateway_ipv6": "2001:660:4406:192::ffff:ffff",
+          "network": "10.4.128.0/18",
+          "network_ipv6": "2001:660:4406:192::/64"
+        },
+        "7": {
+          "gateway": "10.4.255.254",
+          "gateway_ipv6": "2001:660:4406:193::ffff:ffff",
+          "network": "10.4.192.0/18",
+          "network_ipv6": "2001:660:4406:193::/64"
+        },
+        "8": {
+          "gateway": "10.5.63.254",
+          "gateway_ipv6": "2001:660:4406:194::ffff:ffff",
+          "network": "10.5.0.0/18",
+          "network_ipv6": "2001:660:4406:194::/64"
+        },
+        "9": {
+          "gateway": "10.5.127.254",
+          "gateway_ipv6": "2001:660:4406:195::ffff:ffff",
+          "network": "10.5.64.0/18",
+          "network_ipv6": "2001:660:4406:195::/64"
+        },
+        "default": {
+          "gateway": "172.16.31.254",
+          "gateway_ipv6": "2001:660:4406:100::ffff:ffff",
+          "network": "172.16.16.0/20",
+          "network_ipv6": "2001:660:4406:100::/64"
+        }
+      },
+      "latitude": 45.19021,
+      "location": "Grenoble, France",
+      "longitude": 5.76705,
+      "name": "Grenoble",
+      "production": true,
+      "renater_ip": "192.168.4.15",
+      "security_contact": "support-staff@lists.grid5000.fr",
+      "sys_admin_contact": "support-staff@lists.grid5000.fr",
+      "type": "site",
+      "uid": "grenoble",
+      "user_support_contact": "support-staff@lists.grid5000.fr",
+      "virt_ip_range": "10.132.0.0/14",
+      "web": "http://www.grid5000.fr/w/Grenoble:Home"
+    }
+  },
+  "type": "grid",
+  "uid": "grid5000"
+}
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_contiguous-including-threads_cpusets.json b/spec/input/data_contiguous-including-threads_cpusets.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_contiguous-including-threads_cpusets.json
rename to spec/input/data_contiguous-including-threads_cpusets.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_misconfigured_server_with_disk.json b/spec/input/data_misconfigured_server_with_disk.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_misconfigured_server_with_disk.json
rename to spec/input/data_misconfigured_server_with_disk.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_missing_main_network_property.json b/spec/input/data_missing_main_network_property.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_missing_main_network_property.json
rename to spec/input/data_missing_main_network_property.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_round_robin_cpusets.json b/spec/input/data_round_robin_cpusets.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_round_robin_cpusets.json
rename to spec/input/data_round_robin_cpusets.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_nil.json b/spec/input/data_wattmeters_nil.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_nil.json
rename to spec/input/data_wattmeters_nil.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_variations.json b/spec/input/data_wattmeters_variations.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_variations.json
rename to spec/input/data_wattmeters_variations.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json b/spec/input/data_with_disk.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
rename to spec/input/data_with_disk.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json b/spec/input/data_with_non_reservable_gpus.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json
rename to spec/input/data_with_non_reservable_gpus.json
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json b/spec/input/data_without_gpu.json
similarity index 100%
rename from spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
rename to spec/input/data_without_gpu.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_but_chassis_unset.json b/spec/input/oar_but_chassis_unset.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_but_chassis_unset.json
rename to spec/input/oar_but_chassis_unset.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server.json b/spec/input/oar_configured.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server.json
rename to spec/input/oar_configured.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json b/spec/input/oar_duplicated_cpus_cores_gpus.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json
rename to spec/input/oar_duplicated_cpus_cores_gpus.json
diff --git a/spec/input/oar_graffiti-with-all-gpus.json b/spec/input/oar_graffiti-with-all-gpus.json
index 3beeb0a133a297ec1ca0b99bb324af03ccb563cc..95f1e7d7d7a7218dc75195ebf38f5fb757af8f95 100644
--- a/spec/input/oar_graffiti-with-all-gpus.json
+++ b/spec/input/oar_graffiti-with-all-gpus.json
@@ -774814,7 +774814,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -774907,7 +774907,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775000,7 +775000,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775093,7 +775093,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775186,7 +775186,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775279,7 +775279,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775372,7 +775372,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775465,7 +775465,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775558,7 +775558,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775651,7 +775651,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775744,7 +775744,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775837,7 +775837,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775930,7 +775930,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776023,7 +776023,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776116,7 +776116,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776209,7 +776209,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776302,7 +776302,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776395,7 +776395,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776488,7 +776488,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776581,7 +776581,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776674,7 +776674,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776767,7 +776767,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776860,7 +776860,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776953,7 +776953,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777046,7 +777046,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777139,7 +777139,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777232,7 +777232,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777325,7 +777325,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777418,7 +777418,7 @@
       "finaud_decision": "NO",
       "gpu": 60,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777511,7 +777511,7 @@
       "finaud_decision": "NO",
       "gpu": 60,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777604,7 +777604,7 @@
       "finaud_decision": "NO",
       "gpu": 60,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777697,7 +777697,7 @@
       "finaud_decision": "NO",
       "gpu": 60,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777790,7 +777790,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -777883,7 +777883,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -777976,7 +777976,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778069,7 +778069,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778162,7 +778162,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778255,7 +778255,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778348,7 +778348,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778441,7 +778441,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778534,7 +778534,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778627,7 +778627,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778720,7 +778720,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778813,7 +778813,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778906,7 +778906,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778999,7 +778999,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -779092,7 +779092,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -779185,7 +779185,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -779278,7 +779278,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779371,7 +779371,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779464,7 +779464,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779557,7 +779557,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779650,7 +779650,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779743,7 +779743,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779836,7 +779836,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779929,7 +779929,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780022,7 +780022,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780115,7 +780115,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780208,7 +780208,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780301,7 +780301,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780394,7 +780394,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780487,7 +780487,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780580,7 +780580,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780673,7 +780673,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780766,7 +780766,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -780859,7 +780859,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -780952,7 +780952,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781045,7 +781045,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781138,7 +781138,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781231,7 +781231,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781324,7 +781324,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781417,7 +781417,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781510,7 +781510,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781603,7 +781603,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781696,7 +781696,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781789,7 +781789,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781882,7 +781882,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781975,7 +781975,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -782068,7 +782068,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -782161,7 +782161,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -782254,7 +782254,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782347,7 +782347,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782440,7 +782440,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782533,7 +782533,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782626,7 +782626,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782719,7 +782719,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782812,7 +782812,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782905,7 +782905,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782998,7 +782998,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783091,7 +783091,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783184,7 +783184,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783277,7 +783277,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783370,7 +783370,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783463,7 +783463,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783556,7 +783556,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783649,7 +783649,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783742,7 +783742,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -783835,7 +783835,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -783928,7 +783928,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784021,7 +784021,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784114,7 +784114,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784207,7 +784207,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784300,7 +784300,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784393,7 +784393,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784486,7 +784486,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784579,7 +784579,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784672,7 +784672,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784765,7 +784765,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784858,7 +784858,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784951,7 +784951,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -785044,7 +785044,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -785137,7 +785137,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -785230,7 +785230,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785323,7 +785323,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785416,7 +785416,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785509,7 +785509,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785602,7 +785602,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785695,7 +785695,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785788,7 +785788,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785881,7 +785881,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785974,7 +785974,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786067,7 +786067,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786160,7 +786160,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786253,7 +786253,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786346,7 +786346,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786439,7 +786439,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786532,7 +786532,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786625,7 +786625,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786718,7 +786718,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -786811,7 +786811,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -786904,7 +786904,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -786997,7 +786997,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787090,7 +787090,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787183,7 +787183,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787276,7 +787276,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787369,7 +787369,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787462,7 +787462,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787555,7 +787555,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787648,7 +787648,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787741,7 +787741,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787834,7 +787834,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787927,7 +787927,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -788020,7 +788020,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -788113,7 +788113,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -788206,7 +788206,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788299,7 +788299,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788392,7 +788392,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788485,7 +788485,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788578,7 +788578,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788671,7 +788671,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788764,7 +788764,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788857,7 +788857,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788950,7 +788950,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789043,7 +789043,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789136,7 +789136,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789229,7 +789229,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789322,7 +789322,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789415,7 +789415,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789508,7 +789508,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789601,7 +789601,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789694,7 +789694,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -789787,7 +789787,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -789880,7 +789880,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -789973,7 +789973,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790066,7 +790066,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790159,7 +790159,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790252,7 +790252,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790345,7 +790345,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790438,7 +790438,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790531,7 +790531,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790624,7 +790624,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790717,7 +790717,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790810,7 +790810,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790903,7 +790903,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790996,7 +790996,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -791089,7 +791089,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -791182,7 +791182,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791275,7 +791275,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791368,7 +791368,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791461,7 +791461,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791554,7 +791554,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791647,7 +791647,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791740,7 +791740,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791833,7 +791833,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791926,7 +791926,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792019,7 +792019,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792112,7 +792112,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792205,7 +792205,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792298,7 +792298,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792391,7 +792391,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792484,7 +792484,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792577,7 +792577,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792670,7 +792670,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -792763,7 +792763,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -792856,7 +792856,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -792949,7 +792949,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793042,7 +793042,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793135,7 +793135,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793228,7 +793228,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793321,7 +793321,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793414,7 +793414,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793507,7 +793507,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793600,7 +793600,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793693,7 +793693,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793786,7 +793786,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793879,7 +793879,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793972,7 +793972,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -794065,7 +794065,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
diff --git a/spec/input/oar_graffiti-with-missing-gpus.json b/spec/input/oar_graffiti-with-missing-gpus.json
index 8e1b204b0094a9222d183706c30a856cbde4d4ee..15f1da1158f76c7813fb0fe87213cc0fdc8c73a1 100644
--- a/spec/input/oar_graffiti-with-missing-gpus.json
+++ b/spec/input/oar_graffiti-with-missing-gpus.json
@@ -774814,7 +774814,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -774907,7 +774907,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775000,7 +775000,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775093,7 +775093,7 @@
       "finaud_decision": "NO",
       "gpu": 53,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775186,7 +775186,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775279,7 +775279,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775372,7 +775372,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775465,7 +775465,7 @@
       "finaud_decision": "NO",
       "gpu": 54,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775558,7 +775558,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775651,7 +775651,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775744,7 +775744,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775837,7 +775837,7 @@
       "finaud_decision": "NO",
       "gpu": 55,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -775930,7 +775930,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776023,7 +776023,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776116,7 +776116,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776209,7 +776209,7 @@
       "finaud_decision": "NO",
       "gpu": 56,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-1.nancy.grid5000.fr",
@@ -776302,7 +776302,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776395,7 +776395,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776488,7 +776488,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776581,7 +776581,7 @@
       "finaud_decision": "NO",
       "gpu": 57,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776674,7 +776674,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776767,7 +776767,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776860,7 +776860,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -776953,7 +776953,7 @@
       "finaud_decision": "NO",
       "gpu": 58,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777046,7 +777046,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777139,7 +777139,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777232,7 +777232,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777325,7 +777325,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777418,7 +777418,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777511,7 +777511,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777604,7 +777604,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777697,7 +777697,7 @@
       "finaud_decision": "NO",
       "gpu": 59,
       "gpu_count": 3,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-2.nancy.grid5000.fr",
@@ -777790,7 +777790,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -777883,7 +777883,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -777976,7 +777976,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778069,7 +778069,7 @@
       "finaud_decision": "NO",
       "gpu": 61,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778162,7 +778162,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778255,7 +778255,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778348,7 +778348,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778441,7 +778441,7 @@
       "finaud_decision": "NO",
       "gpu": 62,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778534,7 +778534,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778627,7 +778627,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778720,7 +778720,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778813,7 +778813,7 @@
       "finaud_decision": "NO",
       "gpu": 63,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778906,7 +778906,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -778999,7 +778999,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -779092,7 +779092,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -779185,7 +779185,7 @@
       "finaud_decision": "NO",
       "gpu": 64,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-3.nancy.grid5000.fr",
@@ -779278,7 +779278,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779371,7 +779371,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779464,7 +779464,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779557,7 +779557,7 @@
       "finaud_decision": "NO",
       "gpu": 65,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779650,7 +779650,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779743,7 +779743,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779836,7 +779836,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -779929,7 +779929,7 @@
       "finaud_decision": "NO",
       "gpu": 66,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780022,7 +780022,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780115,7 +780115,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780208,7 +780208,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780301,7 +780301,7 @@
       "finaud_decision": "NO",
       "gpu": 67,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780394,7 +780394,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780487,7 +780487,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780580,7 +780580,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780673,7 +780673,7 @@
       "finaud_decision": "NO",
       "gpu": 68,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-4.nancy.grid5000.fr",
@@ -780766,7 +780766,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -780859,7 +780859,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -780952,7 +780952,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781045,7 +781045,7 @@
       "finaud_decision": "NO",
       "gpu": 69,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781138,7 +781138,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781231,7 +781231,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781324,7 +781324,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781417,7 +781417,7 @@
       "finaud_decision": "NO",
       "gpu": 70,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781510,7 +781510,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781603,7 +781603,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781696,7 +781696,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781789,7 +781789,7 @@
       "finaud_decision": "NO",
       "gpu": 71,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781882,7 +781882,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -781975,7 +781975,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -782068,7 +782068,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -782161,7 +782161,7 @@
       "finaud_decision": "NO",
       "gpu": 72,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-5.nancy.grid5000.fr",
@@ -782254,7 +782254,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782347,7 +782347,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782440,7 +782440,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782533,7 +782533,7 @@
       "finaud_decision": "NO",
       "gpu": 73,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782626,7 +782626,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782719,7 +782719,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782812,7 +782812,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782905,7 +782905,7 @@
       "finaud_decision": "NO",
       "gpu": 74,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -782998,7 +782998,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783091,7 +783091,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783184,7 +783184,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783277,7 +783277,7 @@
       "finaud_decision": "NO",
       "gpu": 75,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783370,7 +783370,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783463,7 +783463,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783556,7 +783556,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783649,7 +783649,7 @@
       "finaud_decision": "NO",
       "gpu": 76,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-6.nancy.grid5000.fr",
@@ -783742,7 +783742,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -783835,7 +783835,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -783928,7 +783928,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784021,7 +784021,7 @@
       "finaud_decision": "NO",
       "gpu": 77,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784114,7 +784114,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784207,7 +784207,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784300,7 +784300,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784393,7 +784393,7 @@
       "finaud_decision": "NO",
       "gpu": 78,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784486,7 +784486,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784579,7 +784579,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784672,7 +784672,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784765,7 +784765,7 @@
       "finaud_decision": "NO",
       "gpu": 79,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784858,7 +784858,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -784951,7 +784951,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -785044,7 +785044,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -785137,7 +785137,7 @@
       "finaud_decision": "NO",
       "gpu": 80,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-7.nancy.grid5000.fr",
@@ -785230,7 +785230,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785323,7 +785323,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785416,7 +785416,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785509,7 +785509,7 @@
       "finaud_decision": "NO",
       "gpu": 81,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785602,7 +785602,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785695,7 +785695,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785788,7 +785788,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785881,7 +785881,7 @@
       "finaud_decision": "NO",
       "gpu": 82,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -785974,7 +785974,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786067,7 +786067,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786160,7 +786160,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786253,7 +786253,7 @@
       "finaud_decision": "NO",
       "gpu": 83,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786346,7 +786346,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786439,7 +786439,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786532,7 +786532,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786625,7 +786625,7 @@
       "finaud_decision": "NO",
       "gpu": 84,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-8.nancy.grid5000.fr",
@@ -786718,7 +786718,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -786811,7 +786811,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -786904,7 +786904,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -786997,7 +786997,7 @@
       "finaud_decision": "NO",
       "gpu": 85,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787090,7 +787090,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787183,7 +787183,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787276,7 +787276,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787369,7 +787369,7 @@
       "finaud_decision": "NO",
       "gpu": 86,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787462,7 +787462,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787555,7 +787555,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787648,7 +787648,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787741,7 +787741,7 @@
       "finaud_decision": "NO",
       "gpu": 87,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787834,7 +787834,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -787927,7 +787927,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -788020,7 +788020,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -788113,7 +788113,7 @@
       "finaud_decision": "NO",
       "gpu": 88,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-9.nancy.grid5000.fr",
@@ -788206,7 +788206,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788299,7 +788299,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788392,7 +788392,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788485,7 +788485,7 @@
       "finaud_decision": "NO",
       "gpu": 89,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788578,7 +788578,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788671,7 +788671,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788764,7 +788764,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788857,7 +788857,7 @@
       "finaud_decision": "NO",
       "gpu": 90,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -788950,7 +788950,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789043,7 +789043,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789136,7 +789136,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789229,7 +789229,7 @@
       "finaud_decision": "NO",
       "gpu": 91,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789322,7 +789322,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789415,7 +789415,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789508,7 +789508,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789601,7 +789601,7 @@
       "finaud_decision": "NO",
       "gpu": 92,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-10.nancy.grid5000.fr",
@@ -789694,7 +789694,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -789787,7 +789787,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -789880,7 +789880,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -789973,7 +789973,7 @@
       "finaud_decision": "NO",
       "gpu": 93,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790066,7 +790066,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790159,7 +790159,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790252,7 +790252,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790345,7 +790345,7 @@
       "finaud_decision": "NO",
       "gpu": 94,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790438,7 +790438,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790531,7 +790531,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790624,7 +790624,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790717,7 +790717,7 @@
       "finaud_decision": "NO",
       "gpu": 95,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790810,7 +790810,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790903,7 +790903,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -790996,7 +790996,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -791089,7 +791089,7 @@
       "finaud_decision": "NO",
       "gpu": 96,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-11.nancy.grid5000.fr",
@@ -791182,7 +791182,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791275,7 +791275,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791368,7 +791368,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791461,7 +791461,7 @@
       "finaud_decision": "NO",
       "gpu": 97,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791554,7 +791554,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791647,7 +791647,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791740,7 +791740,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791833,7 +791833,7 @@
       "finaud_decision": "NO",
       "gpu": 98,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -791926,7 +791926,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792019,7 +792019,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792112,7 +792112,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792205,7 +792205,7 @@
       "finaud_decision": "NO",
       "gpu": 99,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792298,7 +792298,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792391,7 +792391,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792484,7 +792484,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792577,7 +792577,7 @@
       "finaud_decision": "NO",
       "gpu": 100,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-12.nancy.grid5000.fr",
@@ -792670,7 +792670,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -792763,7 +792763,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -792856,7 +792856,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -792949,7 +792949,7 @@
       "finaud_decision": "NO",
       "gpu": 101,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "0",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793042,7 +793042,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793135,7 +793135,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793228,7 +793228,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793321,7 +793321,7 @@
       "finaud_decision": "NO",
       "gpu": 102,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "1",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793414,7 +793414,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793507,7 +793507,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793600,7 +793600,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793693,7 +793693,7 @@
       "finaud_decision": "NO",
       "gpu": 103,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "2",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793786,7 +793786,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793879,7 +793879,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -793972,7 +793972,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
@@ -794065,7 +794065,7 @@
       "finaud_decision": "NO",
       "gpu": 104,
       "gpu_count": 4,
-      "gpu_model": "GeForce RTX 2080 Ti",
+      "gpu_model": "RTX 2080 Ti",
       "gpudevice": "3",
       "grub": null,
       "host": "clustera-13.nancy.grid5000.fr",
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_cores.json b/spec/input/oar_misconfigured_cores.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_cores.json
rename to spec/input/oar_misconfigured_cores.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_gpu.json b/spec/input/oar_misconfigured_gpu.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_gpu.json
rename to spec/input/oar_misconfigured_gpu.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_non_reservable_gpu.json b/spec/input/oar_misconfigured_non_reservable_gpu.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_non_reservable_gpu.json
rename to spec/input/oar_misconfigured_non_reservable_gpu.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_missing_property.json b/spec/input/oar_missing_property.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_missing_property.json
rename to spec/input/oar_missing_property.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_quirk_cluster.json b/spec/input/oar_quirk_cluster.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_quirk_cluster.json
rename to spec/input/oar_quirk_cluster.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_to_test_diff.json b/spec/input/oar_to_test_diff.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_to_test_diff.json
rename to spec/input/oar_to_test_diff.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_disk.json b/spec/input/oar_with_disk.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
rename to spec/input/oar_with_disk.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json b/spec/input/oar_with_disk_misconfigured_resources_properties_and_disks.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json
rename to spec/input/oar_with_disk_misconfigured_resources_properties_and_disks.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_few_oar_resources.json b/spec/input/oar_with_too_few_oar_resources.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_with_too_few_oar_resources.json
rename to spec/input/oar_with_too_few_oar_resources.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_many_oar_resources.json b/spec/input/oar_with_too_many_oar_resources.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_with_too_many_oar_resources.json
rename to spec/input/oar_with_too_many_oar_resources.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_without_gpu.json b/spec/input/oar_without_gpu.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_without_gpu.json
rename to spec/input/oar_without_gpu.json
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_wrong_vartype.json b/spec/input/oar_wrong_vartype.json
similarity index 100%
rename from spec/stub_oar_properties/dump_oar_api_configured_server_wrong_vartype.json
rename to spec/input/oar_wrong_vartype.json
diff --git a/spec/oar_properties2_spec.rb b/spec/oar_properties2_spec.rb
index 9788d825bd256b8d13ed12250ea29c11bdfabbcb..dc514ca9682e087785fc81fd64addb79003f385e 100644
--- a/spec/oar_properties2_spec.rb
+++ b/spec/oar_properties2_spec.rb
@@ -1,86 +1,6 @@
 $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
 require 'spec_helper'
 
-def gen_stub(file, site, cluster, node_count = 9999)
-  data = load_data_hierarchy
-  data['sites'].delete_if { |k, v| site != k }
-  data['sites'].each_pair do |site_uid, s|
-    s['clusters'].delete_if { |k, v| cluster != k }
-  end
-  data.delete('network_equipments')
-  data['sites']['fakesite'] = data['sites'][site]
-  data['sites'].delete(site)
-  c = data['sites']['fakesite']['clusters']
-  c['clustera'] = c[cluster]
-  c.delete(cluster)
-  c['clustera']['uid'] = 'clustera'
-  nodes = c['clustera']['nodes']
-  nodes.keys.each do |k|
-    c, n = k.split('-')
-    nodes["clustera-#{n}"] = nodes[k] if n.to_i <= node_count
-    nodes.delete(k)
-  end
-
-  File::open("spec/input/#{file}.json", "w") do |fd|
-    fd.puts JSON::pretty_generate(data)
-  end
-end
-
-def check_oar_properties(o)
-  conf = RefRepo::Utils.get_api_config
-  specdir = File.expand_path(File.dirname(__FILE__))
-  stubbed_addresses = [
-    "#{conf["uri"]}",
-    "#{conf["uri"]}/oarapi/resources/details.json?limit=999999",
-    "#{conf["uri"]}stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999",
-  ]
-  stubbed_api_response = IO.read("#{specdir}/input/#{o[:oar]}.json")
-  stubbed_addresses.each do |stubbed_address|
-    stub_request(:get, stubbed_address).
-      with(
-        headers: {
-          'Accept'=>'*/*',
-        }).
-        to_return(status: 200, body: stubbed_api_response, headers: {})
-  end
-
-  # Overload the 'load_data_hierarchy' to simulate the addition of a fake site in the input files
-  expect_any_instance_of(Object).to receive(:load_data_hierarchy).exactly(3).and_return(JSON::parse(IO.read("#{specdir}/input/#{o[:data]}.json")))
-
-  uri = URI(conf["uri"])
-  response = Net::HTTP.get(uri)
-  expect(response).to be_an_instance_of(String)
-  {
-    'table' => { :table => true, :print => false, :update => false, :diff => false, :site => "fakesite", :clusters => ["clustera"] },
-    'print' => { :table => false, :print => true, :update => false, :diff => false, :site => "fakesite", :clusters => ["clustera"] },
-    'diff'  => { :table => false, :print => false, :update => false, :diff => true, :verbose => 2, :site => "fakesite", :clusters => ["clustera"] }
-  }.each_pair do |type, options|
-    output = capture do
-      generate_oar_properties(options)
-    end
-    # stdout
-    ofile = "#{specdir}/output/#{o[:case]}_#{type}_stdout.txt"
-    if not File::exist?(ofile)
-      puts "Output file #{ofile} did not exist, created."
-      File::open(ofile, "w") { |fd| fd.print output[:stdout] }
-      ofile_data = output[:stdout]
-    else
-      ofile_data = IO::read(ofile)
-    end
-    expect(output[:stdout]).to eq(ofile_data)
-    # stderr
-    ofile = "#{specdir}/output/#{o[:case]}_#{type}_stderr.txt"
-    if not File::exist?(ofile)
-      puts "Output file #{ofile} did not exist, created."
-      File::open(ofile, "w") { |fd| fd.print output[:stderr] }
-      ofile_data = output[:stderr]
-    else
-      ofile_data = IO::read(ofile)
-    end
-    expect(output[:stderr]).to eq(ofile_data)
-
-  end
-end
 
 =begin
 gen_stub('data_graffiti', 'nancy', 'graffiti')
diff --git a/spec/oar_properties_arguments_spec.rb b/spec/oar_properties_arguments_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..00265f341d7db22eacbd2f7193f8aaa618e594db
--- /dev/null
+++ b/spec/oar_properties_arguments_spec.rb
@@ -0,0 +1,62 @@
+$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
+require 'spec_helper'
+
+conf = RefRepo::Utils.get_api_config
+
+describe 'OarProperties' do
+
+  context 'testing arguments' do
+    before do
+      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data.json")
+    end
+
+    it 'should should accept case where only the site is specified' do
+
+      uri = URI(conf["uri"])
+
+      response = Net::HTTP.get(uri)
+
+      expect(response).to be_an_instance_of(String)
+
+      options = {
+          :table => true,
+          :print => false,
+          :update => false,
+          :diff => false,
+          :site => "fakesite",
+      }
+
+      expected_header = <<-TXT
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+TXT
+
+      generator_output = capture do
+        generate_oar_properties(options)
+      end
+
+      expect(generator_output[:stdout]).to include(expected_header)
+    end
+
+    it 'should should accept case where only the site is specified' do
+
+      uri = URI(conf["uri"])
+
+      response = Net::HTTP.get(uri)
+
+      expect(response).to be_an_instance_of(String)
+
+      options = {
+          :table => true,
+          :print => false,
+          :update => false,
+          :diff => false,
+          :site => "fakesite2",
+      }
+
+      expect { generate_oar_properties(options) }.to raise_error("The provided site does not exist : I can't detect clusters")
+    end
+  end
+
+end
diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 8e67abc4e326305294def6e401fd62957c3ff8fe..1ddb493fbf9118791ab51c1a2dd21bf516b3f05e 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1,2793 +1,150 @@
 $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
 require 'spec_helper'
 
-conf = RefRepo::Utils.get_api_config
-
 describe 'OarProperties' do
 
-  context 'testing arguments' do
-    before do
-      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should should accept case where only the site is specified' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-    end
-
-    it 'should should accept case where only the site is specified' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite2",
-      }
-
-      expect { generate_oar_properties(options) }.to raise_error("The provided site does not exist : I can't detect clusters")
-    end
-  end
-
   context 'interracting with an empty OAR server' do
-    before do
-      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      expected_clustera1_desc = <<-TXT
-|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      expected_clustera2_desc = <<-TXT
-|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => true,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clustera1_cmds = <<-TXT
-###################################
-# clustera-1.fakesite.grid5000.fr
-###################################
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-TXT
-
-      expected_clustera2_cmds = <<-TXT
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-TXT
-      expected_clustera3_cmds = <<-TXT
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clustera"],
-          :verbose => 2
-      }
-
-      expected_clustera1_diff = <<-TXT
-  clustera-1: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clustera"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 0]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", "gw-fakesite"]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      expected_clustera2_diff = <<-TXT
-  clustera-2: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clustera"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 0]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", "gw-fakesite"]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clustera1_diff)
-      expect(generator_output[:stdout]).to include(expected_clustera2_diff)
-    end
-  end
-
-  context 'OAR server with data' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      expected_clustera1_desc = <<-TXT
-|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      expected_clustera2_desc = <<-TXT
-|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => true,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clustera1_cmds = <<-TXT
-###################################
-# clustera-1.fakesite.grid5000.fr
-###################################
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-TXT
-
-      expected_clustera2_cmds = <<-TXT
-###################################
-# clustera-2.fakesite.grid5000.fr
-###################################
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
-TXT
-
-      expected_clustera3_cmds = <<-TXT
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clustera"],
-          :verbose => 2
-      }
-
-      expected_clustera1_diff = <<-TXT
-  clustera-1: OK
-TXT
-
-      expected_clustera2_diff = <<-TXT
-  clustera-2: OK
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clustera1_diff)
-      expect(generator_output[:stdout]).to include(expected_clustera2_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_empty', :data => 'data', :case => 'empty' })
     end
   end
 
   context 'OAR server with data' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data.json")
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_configured', :data => 'data', :case => 'with-data' })
     end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => true,
-        :print => false,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
-
-      expected_clustera1_desc = <<-TXT
-|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-      TXT
-
-      expected_clustera2_desc = <<-TXT
-|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera2_desc)
-    end
-
   end
 
   context 'interracting with an empty OAR server (round-robin cpusets)' do
-    before do
-      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_round_robin_cpusets.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => true,
-        :print => false,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
-
-      expected_clustera1_desc = <<-TXT
-|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 2     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 3     | 4        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 4     | 6        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 5     | 8        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-1           | 1     | 6     | 10       | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-      TXT
-
-      expected_clustera2_desc = <<-TXT
-|  clustera | clustera-2           | 4     | 26    | 3        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 27    | 5        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 28    | 7        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 29    | 9        | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 30    | 11       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 31    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => true,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-      TXT
-
-      expected_clustera1_cmds = <<-TXT
-###################################
-# clustera-1.fakesite.grid5000.fr
-###################################
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=4 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-      TXT
-
-      expected_clustera2_cmds = <<-TXT
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=9 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=11 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-      TXT
-      expected_clustera3_cmds = <<-TXT
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_clustera1_diff = <<-TXT
-  clustera-1: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clustera"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 0]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", "gw-fakesite"]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-      TXT
-
-      expected_clustera2_diff = <<-TXT
-  clustera-2: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clustera"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 0]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", "gw-fakesite"]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clustera1_diff)
-      expect(generator_output[:stdout]).to include(expected_clustera2_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_empty', :data => 'data_round_robin_cpusets', :case => 'empty_round_robin' })
     end
   end
 
   context 'interracting with an empty OAR server (contiguous_including_threads cpusets)' do
-    before do
-      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_contiguous-including-threads_cpusets.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => true,
-        :print => false,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
-
-      expected_clustera1_begin_desc = <<-TXT
-|  clustera | clustera-1           | 1     | 1     | 0        |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 2     | 1        |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 3     | 2        |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 4     | 3        |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 5     | 4        |      |                      | ThunderX2 99xx                 |                               |
-      TXT
-
-
-      expected_clustera1_middle_desc = <<-TXT
-|  clustera | clustera-1           | 1     | 29    | 28       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 30    | 29       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 31    | 30       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 1     | 32    | 31       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 2     | 33    | 128      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 2     | 34    | 129      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 2     | 35    | 130      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-1           | 2     | 36    | 131      |      |                      | ThunderX2 99xx                 |                               |
-      TXT
-
-      expected_clustera2_middle_desc = <<-TXT
-|  clustera | clustera-2           | 3     | 93    | 28       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 3     | 94    | 29       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 3     | 95    | 30       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 3     | 96    | 31       |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 97    | 128      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 98    | 129      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 99    | 130      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 100   | 131      |      |                      | ThunderX2 99xx                 |                               |
-      TXT
-
-      expected_clustera2_end_desc = <<-TXT
-|  clustera | clustera-2           | 4     | 125   | 156      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 126   | 157      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 127   | 158      |      |                      | ThunderX2 99xx                 |                               |
-|  clustera | clustera-2           | 4     | 128   | 159      |      |                      | ThunderX2 99xx                 |                               |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_begin_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera1_middle_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera2_middle_desc)
-      expect(generator_output[:stdout]).to include(expected_clustera2_end_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => true,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-      TXT
-
-      expected_clustera1_cmds = <<-TXT
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=29 -p cpuset=28
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=30 -p cpuset=29
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=31 -p cpuset=30
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=32 -p cpuset=31
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=33 -p cpuset=128
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=34 -p cpuset=129
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=35 -p cpuset=130
-oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=36 -p cpuset=131
-      TXT
-
-      expected_clustera2_cmds = <<-TXT
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=93 -p cpuset=28
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=94 -p cpuset=29
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=95 -p cpuset=30
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=96 -p cpuset=31
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=97 -p cpuset=128
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=98 -p cpuset=129
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=99 -p cpuset=130
-oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=100 -p cpuset=131
-      TXT
-
-      expected_clustera3_cmds = <<-TXT
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.54.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='arm64' -p cpuarch='aarch64' -p cpucore=32 -p cputype='ThunderX2 99xx' -p cpufreq='2.2' -p disktype='SAS/SSD' -p chassis='GIGABYTE R181-T92-00 GJG5N9812A0004' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=131072 -p memnode=262144 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201906 -p max_walltime=0 -p production='NO' -p maintenance='YES' -p disk_reservation_count=0
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clustera1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clustera3_cmds)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_empty', :data => 'data_contiguous-including-threads_cpusets', :case => 'empty_contiguous-including-threads_cpusets' })
     end
   end
 
-  context 'interracting with an empty OAR server (cluster with disk)' do
-    before do
-      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_with_disk.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterb"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      expected_clusterb1_desc = <<-TXT
-|  clusterb | clusterb-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      expected_clusterb2_desc = <<-TXT
-|  clusterb | clusterb-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterb1_desc)
-      expect(generator_output[:stdout]).to include(expected_clusterb2_desc)
+  context 'interracting with an empty OAR server (contiguous_grouped_by_threads cpusets)' do
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_empty', :data => 'data_contiguous-grouped-by-threads_cpusets', :case => 'empty_contiguous-grouped-by-threads_cpusets' })
     end
+  end
 
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => true,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterb"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clusterb1_cmds = <<-TXT
-###################################
-# clusterb-1.fakesite.grid5000.fr
-###################################
-oarnodesetting -a -h 'clusterb-1.fakesite.grid5000.fr' -s Absent -p host='clusterb-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clusterb-1.fakesite.grid5000.fr' -s Absent -p host='clusterb-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clusterb-1.fakesite.grid5000.fr' -s Absent -p host='clusterb-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting -a -h 'clusterb-1.fakesite.grid5000.fr' -s Absent -p host='clusterb-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-TXT
-
-      expected_clusterb2_cmds = <<-TXT
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -s Absent -p host='clusterb-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-TXT
-
-      expected_clusterb3_cmds = <<-TXT
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clusterb' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-TXT
-
-      expected_clusterb4_cmds = <<-TXT
-echo '================================================================================'
-echo; echo 'Adding disk sdd.clusterb-2 on host clusterb-2.fakesite.grid5000.fr:'
-disk_exist 'clusterb-2.fakesite.grid5000.fr' 'sdd.clusterb-2' && echo '=> disk already exists'
-disk_exist 'clusterb-2.fakesite.grid5000.fr' 'sdd.clusterb-2' || oarnodesetting -a -h '' -p host='clusterb-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clusterb-2'
-
-echo; echo 'Setting properties for disk sdd.clusterb-2 on host clusterb-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='disk' and disk='sdd.clusterb-2'" -p ip='172.16.64.2' -p cluster='clusterb' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3 -p host='clusterb-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clusterb-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterb1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterb2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterb3_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterb4_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clusterb"],
-          :verbose => 2
-      }
-
-      expected_clusterb1_diff = <<-TXT
-  clusterb-1: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      expected_clusterb2_diff = <<-TXT
-  clusterb-2: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      expected_clusterb3_diff =  <<-TXT
-  ["clusterb-1", "sdb.clusterb-1"]: new disk !
-    ["+", "available_upto", 0]
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cpuset", -1]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk", "sdb.clusterb-1"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0"]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "host", "clusterb-1.fakesite.grid5000.fr"]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "network_address", ""]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-  ["clusterb-1", "sdc.clusterb-1"]: new disk !
-    ["+", "available_upto", 0]
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cpuset", -1]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk", "sdc.clusterb-1"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0"]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "host", "clusterb-1.fakesite.grid5000.fr"]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "network_address", ""]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-  ["clusterb-1", "sdd.clusterb-1"]: new disk !
-    ["+", "available_upto", 0]
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cpuset", -1]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk", "sdd.clusterb-1"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0"]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "host", "clusterb-1.fakesite.grid5000.fr"]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "network_address", ""]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-  ["clusterb-2", "sdb.clusterb-2"]: new disk !
-    ["+", "available_upto", 0]
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cpuset", -1]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk", "sdb.clusterb-2"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0"]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "host", "clusterb-2.fakesite.grid5000.fr"]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "network_address", ""]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-  ["clusterb-2", "sdc.clusterb-2"]: new disk !
-    ["+", "available_upto", 0]
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cpuset", -1]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk", "sdc.clusterb-2"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0"]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "host", "clusterb-2.fakesite.grid5000.fr"]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "network_address", ""]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-  ["clusterb-2", "sdd.clusterb-2"]: new disk !
-    ["+", "available_upto", 0]
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clusterb"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cpuset", -1]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk", "sdd.clusterb-2"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0"]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 4]
-    ["+", "host", "clusterb-2.fakesite.grid5000.fr"]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "network_address", ""]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
 
-      expect(generator_output[:stdout]).to include(expected_clusterb1_diff)
-      expect(generator_output[:stdout]).to include(expected_clusterb2_diff)
-      expect(generator_output[:stdout]).to include(expected_clusterb3_diff)
+  context 'interracting with an empty OAR server (cluster with disk)' do
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_empty', :data => 'data_with_disk', :case => 'empty_with_disk' })
     end
   end
 
-
-
   context 'OAR server with data (cluster with disk)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_with_disk.json", "load_data_hierarchy_stubbed_data_with_disk.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterb"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      expected_clusterb1_desc = <<-TXT
-|  clusterb | clusterb-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      expected_clusterb2_desc = <<-TXT
-|  clusterb | clusterb-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-|  clusterb | clusterb-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterb1_desc)
-      expect(generator_output[:stdout]).to include(expected_clusterb2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => true,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterb"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clusterb1_cmds = <<-TXT
-###################################
-# clusterb-1.fakesite.grid5000.fr
-###################################
-oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-TXT
-
-      expected_clusterb2_cmds = <<-TXT
-###################################
-# clusterb-2.fakesite.grid5000.fr
-###################################
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-TXT
-
-      expected_clusterb3_cmds = <<-TXT
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clusterb' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterb1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterb2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterb3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clusterb"],
-          :verbose => 2
-      }
-
-      expected_clusterb1_diff = <<-TXT
-  clusterb-1: OK
-TXT
-
-      expected_clusterb2_diff = <<-TXT
-  clusterb-2: OK
-TXT
-
-      expected_clusterb3_diff = <<-TXT
-  ["clusterb-1", "sdb.clusterb-1"]: OK
-  ["clusterb-1", "sdc.clusterb-1"]: OK
-  ["clusterb-1", "sdd.clusterb-1"]: OK
-  ["clusterb-2", "sdb.clusterb-2"]: OK
-  ["clusterb-2", "sdc.clusterb-2"]: OK
-  ["clusterb-2", "sdd.clusterb-2"]: OK
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clusterb1_diff)
-      expect(generator_output[:stdout]).to include(expected_clusterb2_diff)
-      expect(generator_output[:stdout]).to include(expected_clusterb3_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_with_disk', :data => 'data_with_disk', :case => 'configured_with_disk' })
     end
   end
 
   context 'interracting with an empty OAR server (without gpu)' do
-    before do
-      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data_without_gpu.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterc"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      expected_clusterc1_desc = <<-TXT
-|  clusterc | clusterc-1           | 1     | 1     | 0        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 2     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 3     | 2        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 4     | 3        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 5     | 4        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 6     | 5        |      |                      | Intel Xeon Silver 4110         |                               |
-TXT
-
-      expected_clusterc2_desc = <<-TXT
-|  clusterc | clusterc-2           | 4     | 26    | 9        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 27    | 10       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 28    | 11       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 29    | 12       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 30    | 13       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 31    | 14       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 32    | 15       |      |                      | Intel Xeon Silver 4110         |                               |
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterc1_desc)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => true,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterc"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clusterc1_cmds = <<-TXT
-###################################
-# clusterc-1.fakesite.grid5000.fr
-###################################
-oarnodesetting -a -h 'clusterc-1.fakesite.grid5000.fr' -s Absent -p host='clusterc-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0
-oarnodesetting -a -h 'clusterc-1.fakesite.grid5000.fr' -s Absent -p host='clusterc-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1
-oarnodesetting -a -h 'clusterc-1.fakesite.grid5000.fr' -s Absent -p host='clusterc-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2
-TXT
-
-
-
-      expected_clusterc2_cmds = <<-TXT
-oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -s Absent -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12
-oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -s Absent -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13
-oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -s Absent -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14
-oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -s Absent -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15
-TXT
-      expected_clusterc3_cmds = <<-TXT
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clusterc' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-TXT
-
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterc1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterc3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clusterc"],
-          :verbose => 2
-      }
-
-      expected_clusterc1_diff = <<-TXT
-  clusterc-1: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
-    ["+", "cluster", "clusterc"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 0]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.1"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      expected_clusterc2_diff = <<-TXT
-  clusterc-2: new node !
-    ["+", "besteffort", "YES"]
-    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
-    ["+", "cluster", "clusterc"]
-    ["+", "cluster_priority", 201906]
-    ["+", "cpuarch", "x86_64"]
-    ["+", "cpucore", 8]
-    ["+", "cpufreq", "2.1"]
-    ["+", "cputype", "Intel Xeon Silver 4110"]
-    ["+", "deploy", "YES"]
-    ["+", "disk_reservation_count", 3]
-    ["+", "disktype", "SATA/SSD"]
-    ["+", "eth_count", 1]
-    ["+", "eth_rate", 10]
-    ["+", "exotic", "NO"]
-    ["+", "gpu_count", 0]
-    ["+", "ib", "NO"]
-    ["+", "ib_count", 0]
-    ["+", "ib_rate", 0]
-    ["+", "ip", "172.16.64.2"]
-    ["+", "maintenance", "NO"]
-    ["+", "max_walltime", 86400]
-    ["+", "memcore", 8192]
-    ["+", "memcpu", 65536]
-    ["+", "memnode", 131072]
-    ["+", "mic", "NO"]
-    ["+", "myri", "NO"]
-    ["+", "myri_count", 0]
-    ["+", "myri_rate", 0]
-    ["+", "nodemodel", "Dell PowerEdge T640"]
-    ["+", "opa_count", 0]
-    ["+", "opa_rate", 0]
-    ["+", "production", "YES"]
-    ["+", "switch", nil]
-    ["+", "virtual", "ivt"]
-    ["+", "wattmeter", "MULTIPLE"]
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clusterc1_diff)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_empty', :data => 'data_without_gpu', :case => 'empty_without_gpu' })
     end
   end
 
   context 'interracting with a configured OAR server (without gpu)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_without_gpu.json", "load_data_hierarchy_stubbed_data_without_gpu.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => true,
-          :print => false,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterc"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-TXT
-
-      expected_clusterc1_desc = <<-TXT
-|  clusterc | clusterc-1           | 1     | 1     | 0        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 2     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 3     | 2        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 4     | 3        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 5     | 4        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 6     | 5        |      |                      | Intel Xeon Silver 4110         |                               |
-TXT
-
-      expected_clusterc2_desc = <<-TXT
-|  clusterc | clusterc-2           | 4     | 26    | 9        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 27    | 10       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 28    | 11       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 29    | 12       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 30    | 13       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 31    | 14       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 32    | 15       |      |                      | Intel Xeon Silver 4110         |                               |
-TXT
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterc1_desc)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => true,
-          :update => false,
-          :diff => false,
-          :site => "fakesite",
-          :clusters => ["clusterc"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clusterc1_cmds = <<-TXT
-###################################
-# clusterc-1.fakesite.grid5000.fr
-###################################
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2
-TXT
-
-      expected_clusterc2_cmds = <<-TXT
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15
-TXT
-      expected_clusterc3_cmds = <<-TXT
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clusterc' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterc1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterc3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clusterc"],
-          :verbose => 2
-      }
-
-      expected_clusterc1_diff = <<-TXT
-Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
-  clusterc-1: OK
-  clusterc-2: OK
-  ["clusterc-1", "sdb.clusterc-1"]: OK
-  ["clusterc-1", "sdc.clusterc-1"]: OK
-  ["clusterc-1", "sdd.clusterc-1"]: OK
-  ["clusterc-2", "sdb.clusterc-2"]: OK
-  ["clusterc-2", "sdc.clusterc-2"]: OK
-  ["clusterc-2", "sdd.clusterc-2"]: OK
-TXT
-
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clusterc1_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_without_gpu', :data => 'data_without_gpu', :case => 'configured_without_gpu' })
     end
   end
 
   context 'interracting with a configured OAR server (quirk cluster)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_quirk_cluster.json", "load_data_hierarchy_stubbed_data_without_gpu.json")
-    end
-
-    it 'should generate correctly a table of nodes' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => true,
-        :print => false,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clusterc"]
-      }
-
-      expected_header = <<-TXT
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
-+---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
-
-      expected_clusterc1_desc = <<-TXT
-|  clusterc | clusterc-1           | 1     | 1     | 0        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 2     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 3     | 2        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 4     | 3        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 5     | 4        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 6     | 5        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 7     | 6        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 8     | 7        |      |                      | Intel Xeon Silver 4110         |                               |
-      TXT
-
-      expected_clusterc2_desc = <<-TXT
-|  clusterc | clusterc-2           | 4     | 26    | 9        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 27    | 10       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 28    | 11       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 29    | 12       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 30    | 13       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 31    | 14       |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-2           | 4     | 32    | 15       |      |                      | Intel Xeon Silver 4110         |                               |
-TXT
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterc1_desc)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_desc)
-    end
-
-    it 'should generate correctly all the commands to update OAR' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => true,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clusterc"]
-      }
-
-      expected_header = <<-TXT
-#############################################
-# Create OAR properties that were created by 'oar_resources_add'
-#############################################
-property_exist 'host' || oarproperty -a host --varchar
-property_exist 'cpu' || oarproperty -a cpu
-property_exist 'core' || oarproperty -a core
-property_exist 'gpudevice' || oarproperty -a gpudevice
-property_exist 'gpu' || oarproperty -a gpu
-property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
-TXT
-
-      expected_clusterc1_cmds = <<-TXT
-###################################
-# clusterc-1.fakesite.grid5000.fr
-###################################
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2
-TXT
-
-      expected_clusterc2_cmds = <<-TXT
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15
-TXT
-      expected_clusterc3_cmds = <<-TXT
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clusterc' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_header)
-      expect(generator_output[:stdout]).to include(expected_clusterc1_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterc2_cmds)
-      expect(generator_output[:stdout]).to include(expected_clusterc3_cmds)
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clusterc"],
-        :verbose => 2
-      }
-
-      expected_clusterc1_diff = <<-TXT
-Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
-  clusterc-1: OK
-  clusterc-2: OK
-  ["clusterc-1", "sdb.clusterc-1"]: OK
-  ["clusterc-1", "sdc.clusterc-1"]: OK
-  ["clusterc-1", "sdd.clusterc-1"]: OK
-  ["clusterc-2", "sdb.clusterc-2"]: OK
-  ["clusterc-2", "sdc.clusterc-2"]: OK
-  ["clusterc-2", "sdd.clusterc-2"]: OK
-TXT
-
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clusterc1_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_quirk_cluster', :data => 'data_without_gpu', :case => 'configured_without_gpu_quirk_cluster' })
     end
   end
 
   context 'interracting with a configured OAR server (misconfigured cores)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_misconfigured_cores.json", "load_data_hierarchy_stubbed_data_without_gpu.json")
-    end
-
-    it 'should generate generate an error' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => true,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clusterc"]
-      }
-
-      expected_output = <<-TXT
-################################
-# Error: resources with ids [2, 3] have the same value for core (core is equal to 3)
-# You can review this situation via the following command:
-################################
-oarnodes -Y --sql "resource_id='2' OR resource_id='3'"
-TXT
-
-      generator_output = capture do
-          generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_misconfigured_cores', :data => 'data_without_gpu', :case => 'configured_misconfigured_cores' })
     end
   end
 
   context 'interracting with a configured OAR server (misconfigured gpu)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_misconfigured_gpu.json", "load_data_hierarchy_stubbed_data_without_gpu.json")
-    end
-
-    it 'should propose a correction' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_output = <<-TXT
-# Error: Resource 9 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=9 cpuset=8 gpu=2 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 2, generator wants 3.
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-    end
-
-    it 'should print commands to correct the cluster' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"]
-      }
-
-      expected_output = <<-TXT
-# Error: Resource 9 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=9 cpuset=8 gpu=2 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 2, generator wants 3.
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_misconfigured_gpu', :data => 'data_without_gpu', :case => 'configured_misconfigured_gpu' })
     end
   end
 
   context 'interracting with a configured OAR server (msising network interfaces)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data_missing_main_network_property.json")
-    end
-
-    it 'should propose a correction' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-Error (missing property) while processing node clustera-1: Node clustera-1 does not have a main network_adapter (ie. an ethernet interface with enabled=true && mounted==true && management==false)
-      TXT
-      expected_output2 = <<-TXT
-*** Error: The following nodes exist in the OAR server but are missing in the reference-repo: clustera-1.
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-      expect(generator_output[:stdout]).to include(expected_output2)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_configured', :data => 'data_missing_main_network_property', :case => 'configured_missing_network_interfaces' })
     end
   end
 
   context 'interracting with a configured OAR server (wrong variable type for gpu)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_wrong_vartype.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should propose a correction' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
-  clustera-1:
-    ["~", "eth_rate", "10", 10]
-      TXT
-
-      expected_output2 = <<-TXT
-Error: the OAR property 'eth_rate' is a 'String' on the fakesite server and this script uses 'Integer' for this property.
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-      expect(generator_output[:stdout]).to include(expected_output2)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_wrong_vartype', :data => 'data', :case => 'wrong_variable_type' })
     end
   end
 
   context 'interracting with a configured OAR server (different_values for wattmeters)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data_wattmeters_variations.json")
-    end
-
-    it 'should propose a correction' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
-  clustera-1:
-    ["~", "wattmeter", "MULTIPLE", "YES"]
-  clustera-2:
-    ["~", "wattmeter", "MULTIPLE", "NO"]
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_configured', :data => 'data_wattmeters_variations', :case => 'different_value_wattmeters' })
     end
   end
 
   context 'interracting with a configured OAR server (no wattmeters)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data_wattmeters_nil.json")
-    end
-
-    it 'should propose a correction' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
-  clustera-1:
-    ["~", "wattmeter", "MULTIPLE", "NO"]
-  clustera-2: same modifications as above
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_configured', :data => 'data_wattmeters_nil', :case => 'wattmeters_nil' })
     end
   end
 
   context 'interracting with a configured OAR server (with missing property)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_missing_property.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should propose a correction (verbose=1)' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 1
-      }
-
-      expected_output = <<-TXT
-clustera-1:["ib_rate"]
-clustera-2:["ib_rate"]
-Properties that need to be created on the fakesite server: ib_rate
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-    end
-
-    it 'should propose a correction (verbose=2)' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-    ["+", "ib_rate", 0]
-  clustera-2: same modifications as above
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-    end
-
-    it 'should propose a correction (verbose=3)' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 3
-      }
-
-      expected_output = <<-TXT
-    "new values": {
-      "ip": "172.16.64.2",
-      "cluster": "clustera",
-      "nodemodel": "Dell PowerEdge T640",
-      "switch": "gw-fakesite",
-      "besteffort": "YES",
-      "deploy": "YES",
-      "virtual": "ivt",
-      "cpuarch": "x86_64",
-      "cpucore": 8,
-      "cputype": "Intel Xeon Silver 4110",
-      "cpufreq": "2.1",
-      "disktype": "SATA/SSD",
-      "chassis": "Dell Inc. PowerEdge T640 9L1CBX2",
-      "eth_count": 1,
-      "eth_rate": 10,
-      "ib_count": 0,
-      "ib_rate": 0,
-      "ib": "NO",
-      "opa_count": 0,
-      "opa_rate": 0,
-      "myri_count": 0,
-      "myri_rate": 0,
-      "myri": "NO",
-      "memcore": 8192,
-      "memcpu": 65536,
-      "memnode": 131072,
-      "gpu_count": 4,
-      "exotic": "NO",
-      "mic": "NO",
-      "wattmeter": "MULTIPLE",
-      "cluster_priority": 201906,
-      "max_walltime": 86400,
-      "production": "YES",
-      "maintenance": "NO",
-      "disk_reservation_count": 0
-    }
-  }
-}
-Properties that need to be created on the fakesite server: ib_rate
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_missing_property', :data => 'data', :case => 'missing_property' })
     end
   end
 
   context 'interracting with a configured OAR server (non reservable GPUs)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json")
-    end
-
-    it 'should ignore the GPUs' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => true,
-        :print => false,
-        :update => false,
-        :diff => false,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-|  clustera | clustera-1           | 1     | 1     | 0        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clustera | clustera-1           | 1     | 2     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clustera | clustera-1           | 1     | 3     | 2        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clustera | clustera-1           | 1     | 4     | 3        |      |                      | Intel Xeon Silver 4110         |                               |
-      TXT
-
-      not_expected_output = <<-TXT
-GeForce RTX 2080 Ti
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-      expect(generator_output[:stdout]).not_to include(not_expected_output)
-    end
-
-    it 'it should expect no value for GPU (DIFF)' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-# Error: Resource 1 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=1 cpuset=0 gpu=1 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 1, generator wants ø.
-# Error: Resource 1 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=1 cpuset=0 gpu=1 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants ø.
-# Error: Resource 2 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=2 cpuset=1 gpu=1 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 1, generator wants ø.
-      TXT
-
-      not_expected_output = <<-TXT
-GeForce RTX 2080 Ti
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-      expect(generator_output[:stdout]).not_to include(not_expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_configured', :data => 'data_with_non_reservable_gpus', :case => 'non_reservable_gpus' })
     end
   end
 
   context 'interracting with a configured same CPUs, COREs, GPUS, allocated to different servers' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should trigger an error with a message' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-################################
-# Error: CPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
-# You can review this situation via the following command:
-################################
-oarnodes -Y --sql "cpu=1"
-
-################################
-# Error: GPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
-# You can review this situation via the following command:
-################################
-oarnodes -Y --sql "gpu=1"
-
-################################
-# Error: resources with ids [21, 22] have the same value for core (core is equal to 21)
-# You can review this situation via the following command:
-################################
-oarnodes -Y --sql "resource_id='21' OR resource_id='22'"
-
-It seems that the cluster "clustera" has some incoherence in its resource configuration (see above). The generator will abort.
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_duplicated_cpus_cores_gpus', :data => 'data', :case => 'duplicated_cpus_cores_gpus' })
     end
   end
 
   context 'interracting with a configured same CPUs, COREs, GPUS, allocated to different servers' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_with_too_many_oar_resources.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should trigger an error with a message' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-CORE has an unexpected number of resources (current:33 vs expected:32).
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_with_too_many_oar_resources', :data => 'data', :case => 'with_too_many_oar_resources' })
     end
   end
 
   context 'interracting with a configured same CPUs, COREs, GPUS, allocated to different servers' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_with_too_few_oar_resources.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should trigger an error with a message' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-CORE has an unexpected number of resources (current:31 vs expected:32).
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_with_too_few_oar_resources', :data => 'data', :case => 'with_too_few_oar_resources' })
     end
   end
 
   context 'interracting with a cluster with misconfigured resources, errors in its OAR properties and some misconfigured disks' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json", "load_data_hierarchy_stubbed_data_with_disk.json")
-    end
-
-    it 'should handle "diff,print" action' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => true,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clusterb"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clusterb' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-      TXT
-
-      expected_output2 = <<-TXT
-oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clusterb' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-      TXT
-
-      expected_output3 = <<-TXT
-echo '================================================================================'
-echo; echo 'Adding disk sdb.clusterb-1 on host clusterb-1.fakesite.grid5000.fr:'
-disk_exist 'clusterb-1.fakesite.grid5000.fr' 'sdb.clusterb-1' && echo '=> disk already exists'
-disk_exist 'clusterb-1.fakesite.grid5000.fr' 'sdb.clusterb-1' || oarnodesetting -a -h '' -p host='clusterb-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clusterb-1'
-
-echo; echo 'Setting properties for disk sdb.clusterb-1 on host clusterb-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' and type='disk' and disk='sdb.clusterb-1'" -p ip='172.16.64.1' -p cluster='clusterb' -p nodemodel='Dell PowerEdge T640' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3 -p host='clusterb-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clusterb-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
-      TXT
-
-      expected_output4 = <<-TXT
-oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
-      TXT
-      dont_expected_output5 = <<-TXT
-echo; echo 'Adding disk sdb.clusterb-2 on host clusterb-1.fakesite.grid5000.fr:'
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_output)
-      expect(generator_output[:stdout]).to include(expected_output2)
-      expect(generator_output[:stdout]).to include(expected_output3)
-      expect(generator_output[:stdout]).to include(expected_output4)
-      expect(generator_output[:stdout]).not_to include(dont_expected_output5)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_with_disk_misconfigured_resources_properties_and_disks', :data => 'data_with_disk', :case => 'with_disk_misconfigured_resources_properties_and_disks' })
     end
   end
 
   context 'OAR server with data' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data_bad_best_effort_property.json")
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-        :table => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_clustera1_diff = <<-TXT
-  clustera-1: OK
-      TXT
-
-      expected_clustera2_diff = <<-TXT
-  clustera-2:
-    ["~", "besteffort", "YES", "NO"]
-      TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clustera1_diff)
-      expect(generator_output[:stdout]).to include(expected_clustera2_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_configured', :data => 'data_bad_best_effort_property', :case => 'bad_best_effort_property' })
     end
   end
 
   context 'OAR server with data but chassis is unset' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_but_chassis_unset.json", "load_data_hierarchy_stubbed_data.json")
-    end
-
-    it 'should generate correctly a diff with the OAR server' do
-
-      uri = URI(conf["uri"])
-
-      response = Net::HTTP.get(uri)
-
-      expect(response).to be_an_instance_of(String)
-
-      options = {
-          :table => false,
-          :print => false,
-          :update => false,
-          :diff => true,
-          :site => "fakesite",
-          :clusters => ["clustera"],
-          :verbose => 2
-      }
-
-      expected_clustera1_diff = <<-TXT
-  clustera-1:
-    ["~", "chassis", nil, "Dell Inc. PowerEdge T640 FL1CBX2"]
-TXT
-      expected_clustera2_diff = <<-TXT
-  clustera-2:
-    ["~", "chassis", nil, "Dell Inc. PowerEdge T640 9L1CBX2"]
-TXT
-
-      generator_output = capture do
-        generate_oar_properties(options)
-      end
-
-      expect(generator_output[:stdout]).to include(expected_clustera1_diff)
-      expect(generator_output[:stdout]).to include(expected_clustera2_diff)
+    it 'should work correctly' do
+      check_oar_properties({ :oar => 'oar_but_chassis_unset', :data => 'data', :case => 'chassis_unset' })
     end
   end
 end
diff --git a/spec/output/bad_best_effort_property_diff_stderr.txt b/spec/output/bad_best_effort_property_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/bad_best_effort_property_diff_stdout.txt b/spec/output/bad_best_effort_property_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..17eada139daf402fdce76b153ee15e891b6e6dd8
--- /dev/null
+++ b/spec/output/bad_best_effort_property_diff_stdout.txt
@@ -0,0 +1,6 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+  clustera-2:
+    ["~", "besteffort", "YES", "NO"]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
diff --git a/spec/output/bad_best_effort_property_print_stderr.txt b/spec/output/bad_best_effort_property_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/bad_best_effort_property_print_stdout.txt b/spec/output/bad_best_effort_property_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6a22915e36a156ae9af62cdf7808b4ec41d257c4
--- /dev/null
+++ b/spec/output/bad_best_effort_property_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='NO' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/bad_best_effort_property_table_stderr.txt b/spec/output/bad_best_effort_property_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/bad_best_effort_property_table_stdout.txt b/spec/output/bad_best_effort_property_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/bad_best_effort_property_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/chassis_unset_diff_stderr.txt b/spec/output/chassis_unset_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/chassis_unset_diff_stdout.txt b/spec/output/chassis_unset_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ef83776cb0b2715a3f9bc273f6ba4bccd5b54010
--- /dev/null
+++ b/spec/output/chassis_unset_diff_stdout.txt
@@ -0,0 +1,8 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "chassis", nil, "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+  clustera-2:
+    ["~", "chassis", nil, "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+Properties that need to be created on the fakesite server: chassis
diff --git a/spec/output/chassis_unset_print_stderr.txt b/spec/output/chassis_unset_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/chassis_unset_print_stdout.txt b/spec/output/chassis_unset_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a841e23f8a57ee52246f1ec10be6955ac4bb2561
--- /dev/null
+++ b/spec/output/chassis_unset_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/chassis_unset_table_stderr.txt b/spec/output/chassis_unset_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/chassis_unset_table_stdout.txt b/spec/output/chassis_unset_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/chassis_unset_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/configured_misconfigured_cores_diff_stderr.txt b/spec/output/configured_misconfigured_cores_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_misconfigured_cores_diff_stdout.txt b/spec/output/configured_misconfigured_cores_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..087a1a2ba22b78e85369342d28ec3218646c0df5
--- /dev/null
+++ b/spec/output/configured_misconfigured_cores_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: switch, chassis, gpu_model, exotic
diff --git a/spec/output/configured_misconfigured_cores_print_stderr.txt b/spec/output/configured_misconfigured_cores_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_misconfigured_cores_print_stdout.txt b/spec/output/configured_misconfigured_cores_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d5029a371abf08d9b502719c5ccc2614b0386e26
--- /dev/null
+++ b/spec/output/configured_misconfigured_cores_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=33 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=34 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=35 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=36 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=37 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=38 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=39 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=40 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=41 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=42 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=43 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=44 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=45 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=46 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=49 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=50 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=51 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=52 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=53 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=54 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=55 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=56 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=57 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=58 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=59 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=60 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=61 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=62 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/configured_misconfigured_cores_table_stderr.txt b/spec/output/configured_misconfigured_cores_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_misconfigured_cores_table_stdout.txt b/spec/output/configured_misconfigured_cores_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1090ebff98aa050980ed0be19f5d2f9e284dbbc7
--- /dev/null
+++ b/spec/output/configured_misconfigured_cores_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 5     | 33    | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 34    | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 35    | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 36    | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 37    | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 38    | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 39    | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 40    | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 41    | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 42    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 43    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 44    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 45    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 46    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 47    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 48    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 49    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 50    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 51    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 52    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 53    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 54    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 55    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 56    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 57    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 58    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 59    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 60    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 61    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 62    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 63    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 64    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/configured_misconfigured_gpu_diff_stderr.txt b/spec/output/configured_misconfigured_gpu_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_misconfigured_gpu_diff_stdout.txt b/spec/output/configured_misconfigured_gpu_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..475daed29df6bb50d8adede0e089af2b8b8ec124
--- /dev/null
+++ b/spec/output/configured_misconfigured_gpu_diff_stdout.txt
@@ -0,0 +1,13 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "deploy", "NO", "YES"]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "exotic", "NO"]
+  clustera-2:
+    ["~", "deploy", "NO", "YES"]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "exotic", "NO"]
+Properties that need to be created on the fakesite server: chassis, exotic
+# Error: Resource 9 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=9 cpuset=8 gpu=2 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 2, generator wants 3.
diff --git a/spec/output/configured_misconfigured_gpu_print_stderr.txt b/spec/output/configured_misconfigured_gpu_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_misconfigured_gpu_print_stdout.txt b/spec/output/configured_misconfigured_gpu_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..646a3ae82fafe8b6387f2e94c6813d4d0ae8b548
--- /dev/null
+++ b/spec/output/configured_misconfigured_gpu_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/configured_misconfigured_gpu_table_stderr.txt b/spec/output/configured_misconfigured_gpu_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_misconfigured_gpu_table_stdout.txt b/spec/output/configured_misconfigured_gpu_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/configured_misconfigured_gpu_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/configured_missing_network_interfaces_diff_stderr.txt b/spec/output/configured_missing_network_interfaces_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_missing_network_interfaces_diff_stdout.txt b/spec/output/configured_missing_network_interfaces_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7d23e87ae84f689e399cf28d25ffdd93e5d0f8ab
--- /dev/null
+++ b/spec/output/configured_missing_network_interfaces_diff_stdout.txt
@@ -0,0 +1,5 @@
+Error (missing property) while processing node clustera-1: Node clustera-1 does not have a main network_adapter (ie. an ethernet interface with enabled=true && mounted==true && management==false)
+*** Error: The following nodes exist in the OAR server but are missing in the reference-repo: clustera-1.
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-2:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
diff --git a/spec/output/configured_missing_network_interfaces_print_stderr.txt b/spec/output/configured_missing_network_interfaces_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_missing_network_interfaces_print_stdout.txt b/spec/output/configured_missing_network_interfaces_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3d9c1fcda71578e8e627a523f0243d6cb71a43fc
--- /dev/null
+++ b/spec/output/configured_missing_network_interfaces_print_stdout.txt
@@ -0,0 +1,136 @@
+Error (missing property) while processing node clustera-1: Node clustera-1 does not have a main network_adapter (ie. an ethernet interface with enabled=true && mounted==true && management==false)
+Error (missing property) while processing node clustera-1: Node clustera-1 does not have a main network_adapter (ie. an ethernet interface with enabled=true && mounted==true && management==false)
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo ; echo 'Not setting properties for clustera-1.fakesite.grid5000.fr: node is not available in ref-api (retired?)'; echo
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/configured_missing_network_interfaces_table_stderr.txt b/spec/output/configured_missing_network_interfaces_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_missing_network_interfaces_table_stdout.txt b/spec/output/configured_missing_network_interfaces_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..563f35f8b07aa004fbe58b7434364a611fab392b
--- /dev/null
+++ b/spec/output/configured_missing_network_interfaces_table_stdout.txt
@@ -0,0 +1,37 @@
+Error (missing property) while processing node clustera-1: Node clustera-1 does not have a main network_adapter (ie. an ethernet interface with enabled=true && mounted==true && management==false)
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/configured_with_disk_diff_stderr.txt b/spec/output/configured_with_disk_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_with_disk_diff_stdout.txt b/spec/output/configured_with_disk_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9fd42b0564e636f22f4f52bacf520380bcd48f5
--- /dev/null
+++ b/spec/output/configured_with_disk_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: switch
diff --git a/spec/output/configured_with_disk_print_stderr.txt b/spec/output/configured_with_disk_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_with_disk_print_stdout.txt b/spec/output/configured_with_disk_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dece82f8315cb9f234791ce6b9168c345dd13a49
--- /dev/null
+++ b/spec/output/configured_with_disk_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=33 -p cpuset=0 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=34 -p cpuset=1 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=35 -p cpuset=2 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=36 -p cpuset=3 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=37 -p cpuset=4 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=38 -p cpuset=5 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=39 -p cpuset=6 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=40 -p cpuset=7 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=41 -p cpuset=8 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=42 -p cpuset=9 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=43 -p cpuset=10 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=44 -p cpuset=11 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=45 -p cpuset=12 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=46 -p cpuset=13 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=14 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=49 -p cpuset=0 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=50 -p cpuset=1 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=51 -p cpuset=2 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=52 -p cpuset=3 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=53 -p cpuset=4 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=54 -p cpuset=5 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=55 -p cpuset=6 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=56 -p cpuset=7 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=57 -p cpuset=8 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=58 -p cpuset=9 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=59 -p cpuset=10 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=60 -p cpuset=11 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=61 -p cpuset=12 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=62 -p cpuset=13 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=14 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/configured_with_disk_table_stderr.txt b/spec/output/configured_with_disk_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_with_disk_table_stdout.txt b/spec/output/configured_with_disk_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..61ea618d71d84d14ff12cc4b0fa827f8828dfdd3
--- /dev/null
+++ b/spec/output/configured_with_disk_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 5     | 33    | 0        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 34    | 1        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 35    | 2        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 36    | 3        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 37    | 4        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 38    | 5        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 39    | 6        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 40    | 7        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 41    | 8        | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 42    | 9        | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 43    | 10       | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 44    | 11       | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 45    | 12       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 46    | 13       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 47    | 14       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 48    | 15       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 49    | 0        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 50    | 1        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 51    | 2        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 52    | 3        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 53    | 4        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 54    | 5        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 55    | 6        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 56    | 7        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 57    | 8        | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 58    | 9        | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 59    | 10       | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 60    | 11       | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 61    | 12       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 62    | 13       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 63    | 14       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 64    | 15       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/configured_without_gpu_diff_stderr.txt b/spec/output/configured_without_gpu_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_without_gpu_diff_stdout.txt b/spec/output/configured_without_gpu_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d680347a7b77d3ff0b565a06c66ea69fe6199557
--- /dev/null
+++ b/spec/output/configured_without_gpu_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: switch, gpu_model
diff --git a/spec/output/configured_without_gpu_print_stderr.txt b/spec/output/configured_without_gpu_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_without_gpu_print_stdout.txt b/spec/output/configured_without_gpu_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d5029a371abf08d9b502719c5ccc2614b0386e26
--- /dev/null
+++ b/spec/output/configured_without_gpu_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=33 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=34 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=35 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=36 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=37 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=38 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=39 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=40 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=41 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=42 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=43 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=44 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=45 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=46 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=49 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=50 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=51 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=52 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=53 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=54 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=55 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=56 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=57 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=58 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=59 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=60 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=61 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=62 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/configured_without_gpu_quirk_cluster_diff_stderr.txt b/spec/output/configured_without_gpu_quirk_cluster_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_without_gpu_quirk_cluster_diff_stdout.txt b/spec/output/configured_without_gpu_quirk_cluster_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d680347a7b77d3ff0b565a06c66ea69fe6199557
--- /dev/null
+++ b/spec/output/configured_without_gpu_quirk_cluster_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: switch, gpu_model
diff --git a/spec/output/configured_without_gpu_quirk_cluster_print_stderr.txt b/spec/output/configured_without_gpu_quirk_cluster_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_without_gpu_quirk_cluster_print_stdout.txt b/spec/output/configured_without_gpu_quirk_cluster_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d5029a371abf08d9b502719c5ccc2614b0386e26
--- /dev/null
+++ b/spec/output/configured_without_gpu_quirk_cluster_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=33 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=34 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=35 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=36 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=37 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=38 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=39 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=40 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=41 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=42 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=43 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=44 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=45 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=46 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=49 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=50 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=51 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=52 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=53 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=54 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=55 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=56 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=57 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=58 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=59 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=60 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=61 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=62 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/configured_without_gpu_quirk_cluster_table_stderr.txt b/spec/output/configured_without_gpu_quirk_cluster_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_without_gpu_quirk_cluster_table_stdout.txt b/spec/output/configured_without_gpu_quirk_cluster_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1090ebff98aa050980ed0be19f5d2f9e284dbbc7
--- /dev/null
+++ b/spec/output/configured_without_gpu_quirk_cluster_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 5     | 33    | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 34    | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 35    | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 36    | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 37    | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 38    | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 39    | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 40    | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 41    | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 42    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 43    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 44    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 45    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 46    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 47    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 48    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 49    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 50    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 51    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 52    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 53    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 54    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 55    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 56    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 57    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 58    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 59    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 60    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 61    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 62    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 63    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 64    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/configured_without_gpu_table_stderr.txt b/spec/output/configured_without_gpu_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/configured_without_gpu_table_stdout.txt b/spec/output/configured_without_gpu_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1090ebff98aa050980ed0be19f5d2f9e284dbbc7
--- /dev/null
+++ b/spec/output/configured_without_gpu_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 5     | 33    | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 34    | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 35    | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 36    | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 37    | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 38    | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 39    | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 40    | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 41    | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 42    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 43    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 44    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 45    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 46    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 47    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 48    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 49    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 50    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 51    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 52    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 53    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 54    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 55    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 56    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 57    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 58    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 59    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 60    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 61    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 62    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 63    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 64    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/dahu_empty_diff_stdout.txt b/spec/output/dahu_empty_diff_stdout.txt
index 6c6fcac5694ba586ab4f18772e7920837fbc652d..6c27d6a0a8c7e0049e2a575e0f260278c6ca6d1f 100644
--- a/spec/output/dahu_empty_diff_stdout.txt
+++ b/spec/output/dahu_empty_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: new node !
     ["+", "besteffort", "YES"]
@@ -17,6 +15,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -53,6 +52,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -89,6 +89,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -125,6 +126,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -161,6 +163,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -197,6 +200,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -233,6 +237,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -269,6 +274,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -289,4 +295,4 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "switch", "gw"]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "NO"]
-Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/dahu_empty_print_stdout.txt b/spec/output/dahu_empty_print_stdout.txt
index 10d7a1a5858bbf40097dfe0d0725b64212a6da41..1ee83d3c81a0ac588203cac0cfb2c0082c467239 100644
--- a/spec/output/dahu_empty_print_stdout.txt
+++ b/spec/output/dahu_empty_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -120,7 +121,7 @@ oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=31 -p cpuset=29
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=32 -p cpuset=31
 echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17TRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17TRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -161,7 +162,7 @@ oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=63 -p cpuset=29
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=64 -p cpuset=31
 echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17VJSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17VJSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -202,7 +203,7 @@ oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=95 -p cpuset=29
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=96 -p cpuset=31
 echo; echo 'Setting properties for clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17VKSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17VKSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -243,7 +244,7 @@ oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=127 -p cpuset=29
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=128 -p cpuset=31
 echo; echo 'Setting properties for clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17VLSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 17VLSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -284,7 +285,7 @@ oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=159 -p cpuset=29
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=160 -p cpuset=31
 echo; echo 'Setting properties for clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16XKSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16XKSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -325,7 +326,7 @@ oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='clustera-6.fakesite.grid5000.fr' -p cpu=12 -p core=191 -p cpuset=29
 oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='clustera-6.fakesite.grid5000.fr' -p cpu=12 -p core=192 -p cpuset=31
 echo; echo 'Setting properties for clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16WMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16WMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -366,7 +367,7 @@ oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='clustera-7.fakesite.grid5000.fr' -p cpu=14 -p core=223 -p cpuset=29
 oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='clustera-7.fakesite.grid5000.fr' -p cpu=14 -p core=224 -p cpuset=31
 echo; echo 'Setting properties for clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16YLSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16YLSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -407,6 +408,6 @@ oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='clustera-8.fakesite.grid5000.fr' -p cpu=16 -p core=255 -p cpuset=29
 oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='clustera-8.fakesite.grid5000.fr' -p cpu=16 -p core=256 -p cpuset=31
 echo; echo 'Setting properties for clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16XQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='default'" -p ip='172.16.20.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge C6420' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge C6420 16XQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6144 -p memcpu=98304 -p memnode=196608 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201800 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/different_value_wattmeters_diff_stderr.txt b/spec/output/different_value_wattmeters_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/different_value_wattmeters_diff_stdout.txt b/spec/output/different_value_wattmeters_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2fa93cf2a540cf726de78fb08a7ccaf60c61d91b
--- /dev/null
+++ b/spec/output/different_value_wattmeters_diff_stdout.txt
@@ -0,0 +1,7 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["~", "wattmeter", "MULTIPLE", "YES"]
+  clustera-2:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["~", "wattmeter", "MULTIPLE", "NO"]
diff --git a/spec/output/different_value_wattmeters_print_stderr.txt b/spec/output/different_value_wattmeters_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/different_value_wattmeters_print_stdout.txt b/spec/output/different_value_wattmeters_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e1a2842e6667c119536d2ca89add54ef7a432c35
--- /dev/null
+++ b/spec/output/different_value_wattmeters_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/different_value_wattmeters_table_stderr.txt b/spec/output/different_value_wattmeters_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/different_value_wattmeters_table_stdout.txt b/spec/output/different_value_wattmeters_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/different_value_wattmeters_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/duplicated_cpus_cores_gpus_diff_stderr.txt b/spec/output/duplicated_cpus_cores_gpus_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/duplicated_cpus_cores_gpus_diff_stdout.txt b/spec/output/duplicated_cpus_cores_gpus_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..665cedfb70d3cb470f57c75b0e57684f154aebd5
--- /dev/null
+++ b/spec/output/duplicated_cpus_cores_gpus_diff_stdout.txt
@@ -0,0 +1,20 @@
+################################
+# Error: CPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "cpu=1"
+
+################################
+# Error: GPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "gpu=1"
+
+################################
+# Error: resources with ids [21, 22] have the same value for core (core is equal to 21)
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "resource_id='21' OR resource_id='22'"
+
+It seems that the cluster "clustera" has some incoherence in its resource configuration (see above). The generator will abort.
+Sanity check failed
diff --git a/spec/output/duplicated_cpus_cores_gpus_print_stderr.txt b/spec/output/duplicated_cpus_cores_gpus_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/duplicated_cpus_cores_gpus_print_stdout.txt b/spec/output/duplicated_cpus_cores_gpus_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..665cedfb70d3cb470f57c75b0e57684f154aebd5
--- /dev/null
+++ b/spec/output/duplicated_cpus_cores_gpus_print_stdout.txt
@@ -0,0 +1,20 @@
+################################
+# Error: CPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "cpu=1"
+
+################################
+# Error: GPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "gpu=1"
+
+################################
+# Error: resources with ids [21, 22] have the same value for core (core is equal to 21)
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "resource_id='21' OR resource_id='22'"
+
+It seems that the cluster "clustera" has some incoherence in its resource configuration (see above). The generator will abort.
+Sanity check failed
diff --git a/spec/output/duplicated_cpus_cores_gpus_table_stderr.txt b/spec/output/duplicated_cpus_cores_gpus_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/duplicated_cpus_cores_gpus_table_stdout.txt b/spec/output/duplicated_cpus_cores_gpus_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..665cedfb70d3cb470f57c75b0e57684f154aebd5
--- /dev/null
+++ b/spec/output/duplicated_cpus_cores_gpus_table_stdout.txt
@@ -0,0 +1,20 @@
+################################
+# Error: CPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "cpu=1"
+
+################################
+# Error: GPU 1 is associated to more than one host: ["clustera-1.fakesite.grid5000.fr", "clustera-2.fakesite.grid5000.fr"].
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "gpu=1"
+
+################################
+# Error: resources with ids [21, 22] have the same value for core (core is equal to 21)
+# You can review this situation via the following command:
+################################
+oarnodes -Y --sql "resource_id='21' OR resource_id='22'"
+
+It seems that the cluster "clustera" has some incoherence in its resource configuration (see above). The generator will abort.
+Sanity check failed
diff --git a/spec/output/empty_contiguous-grouped-by-threads_cpusets_diff_stderr.txt b/spec/output/empty_contiguous-grouped-by-threads_cpusets_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_contiguous-grouped-by-threads_cpusets_diff_stdout.txt b/spec/output/empty_contiguous-grouped-by-threads_cpusets_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..00ac08ae60b5cc8affcb74cf063fccded3660e96
--- /dev/null
+++ b/spec/output/empty_contiguous-grouped-by-threads_cpusets_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "IBM 8335-GTB 21089EA"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 202010]
+    ["+", "cpuarch", "ppc64le"]
+    ["+", "cpucore", 10]
+    ["+", "cpufreq", "4.0"]
+    ["+", "cputype", "POWER8NVL 1.0"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/HDD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "YES"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla P100"]
+    ["+", "ib", "EDR"]
+    ["+", "ib_count", 2]
+    ["+", "ib_rate", 100]
+    ["+", "ip", "172.16.24.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 0]
+    ["+", "memcore", 6553]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "IBM PowerNV S822LC (8335-GTB)"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "NO"]
+    ["+", "switch", "gw"]
+    ["+", "virtual", nil]
+    ["+", "wattmeter", "NO"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "IBM 8335-GTB 2108A0A"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 202010]
+    ["+", "cpuarch", "ppc64le"]
+    ["+", "cpucore", 10]
+    ["+", "cpufreq", "4.0"]
+    ["+", "cputype", "POWER8NVL 1.0"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/HDD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "YES"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla P100"]
+    ["+", "ib", "EDR"]
+    ["+", "ib_count", 2]
+    ["+", "ib_rate", 100]
+    ["+", "ip", "172.16.24.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 0]
+    ["+", "memcore", 6553]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "IBM PowerNV S822LC (8335-GTB)"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "NO"]
+    ["+", "switch", "gw"]
+    ["+", "virtual", nil]
+    ["+", "wattmeter", "NO"]
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/empty_contiguous-grouped-by-threads_cpusets_print_stderr.txt b/spec/output/empty_contiguous-grouped-by-threads_cpusets_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_contiguous-grouped-by-threads_cpusets_print_stdout.txt b/spec/output/empty_contiguous-grouped-by-threads_cpusets_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9899b5dd3929f017fc75d9ec6bebed4fee37e7f0
--- /dev/null
+++ b/spec/output/empty_contiguous-grouped-by-threads_cpusets_print_stdout.txt
@@ -0,0 +1,142 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=8 -p gpu=1 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=16 -p gpu=1 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=24 -p gpu=1 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=5 -p cpuset=32 -p gpu=1 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=6 -p cpuset=40 -p gpu=2 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=7 -p cpuset=48 -p gpu=2 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=8 -p cpuset=56 -p gpu=2 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=9 -p cpuset=64 -p gpu=2 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=10 -p cpuset=72 -p gpu=2 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=11 -p cpuset=80 -p gpu=3 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=12 -p cpuset=88 -p gpu=3 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=13 -p cpuset=96 -p gpu=3 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=14 -p cpuset=104 -p gpu=3 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=112 -p gpu=3 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=120 -p gpu=4 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=17 -p cpuset=128 -p gpu=4 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=18 -p cpuset=136 -p gpu=4 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=19 -p cpuset=144 -p gpu=4 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=20 -p cpuset=152 -p gpu=4 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.24.1' -p cluster='clustera' -p nodemodel='IBM PowerNV S822LC (8335-GTB)' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p cpuarch='ppc64le' -p cpucore=10 -p cputype='POWER8NVL 1.0' -p cpufreq='4.0' -p disktype='SATA/HDD' -p chassis='IBM 8335-GTB 21089EA' -p eth_count=1 -p eth_rate=10 -p ib_count=2 -p ib_rate=100 -p ib='EDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6553 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla P100' -p gpu_count=4 -p exotic='YES' -p mic='NO' -p wattmeter='NO' -p cluster_priority=202010 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=21 -p cpuset=0 -p gpu=5 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=22 -p cpuset=8 -p gpu=5 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=23 -p cpuset=16 -p gpu=5 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=24 -p cpuset=24 -p gpu=5 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=25 -p cpuset=32 -p gpu=5 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=26 -p cpuset=40 -p gpu=6 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=27 -p cpuset=48 -p gpu=6 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=28 -p cpuset=56 -p gpu=6 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=29 -p cpuset=64 -p gpu=6 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=30 -p cpuset=72 -p gpu=6 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=80 -p gpu=7 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=88 -p gpu=7 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=33 -p cpuset=96 -p gpu=7 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=34 -p cpuset=104 -p gpu=7 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=35 -p cpuset=112 -p gpu=7 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=36 -p cpuset=120 -p gpu=8 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=37 -p cpuset=128 -p gpu=8 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=38 -p cpuset=136 -p gpu=8 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=39 -p cpuset=144 -p gpu=8 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=40 -p cpuset=152 -p gpu=8 -p gpu_model='Tesla P100-SXM2-16GB' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.24.2' -p cluster='clustera' -p nodemodel='IBM PowerNV S822LC (8335-GTB)' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p cpuarch='ppc64le' -p cpucore=10 -p cputype='POWER8NVL 1.0' -p cpufreq='4.0' -p disktype='SATA/HDD' -p chassis='IBM 8335-GTB 2108A0A' -p eth_count=1 -p eth_rate=10 -p ib_count=2 -p ib_rate=100 -p ib='EDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=6553 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla P100' -p gpu_count=4 -p exotic='YES' -p mic='NO' -p wattmeter='NO' -p cluster_priority=202010 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/empty_contiguous-grouped-by-threads_cpusets_table_stderr.txt b/spec/output/empty_contiguous-grouped-by-threads_cpusets_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_contiguous-grouped-by-threads_cpusets_table_stdout.txt b/spec/output/empty_contiguous-grouped-by-threads_cpusets_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a32984eed1a34474614eec43b5f05595d4a47d23
--- /dev/null
+++ b/spec/output/empty_contiguous-grouped-by-threads_cpusets_table_stdout.txt
@@ -0,0 +1,44 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 2     | 8        | 1    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 3     | 16       | 1    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 4     | 24       | 1    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 5     | 32       | 1    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 6     | 40       | 2    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 7     | 48       | 2    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 8     | 56       | 2    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 9     | 64       | 2    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 1     | 10    | 72       | 2    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 11    | 80       | 3    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 12    | 88       | 3    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 13    | 96       | 3    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 14    | 104      | 3    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 15    | 112      | 3    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 16    | 120      | 4    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 17    | 128      | 4    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 18    | 136      | 4    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 19    | 144      | 4    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-1           | 2     | 20    | 152      | 4    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 21    | 0        | 5    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 22    | 8        | 5    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 23    | 16       | 5    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 24    | 24       | 5    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 25    | 32       | 5    | 0                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 26    | 40       | 6    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 27    | 48       | 6    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 28    | 56       | 6    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 29    | 64       | 6    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 3     | 30    | 72       | 6    | 1                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 31    | 80       | 7    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 32    | 88       | 7    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 33    | 96       | 7    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 34    | 104      | 7    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 35    | 112      | 7    | 2                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 36    | 120      | 8    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 37    | 128      | 8    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 38    | 136      | 8    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 39    | 144      | 8    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
+|  clustera | clustera-2           | 4     | 40    | 152      | 8    | 3                    | POWER8NVL 1.0                  | Tesla P100-SXM2-16GB          |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/empty_contiguous-including-threads_cpusets_diff_stderr.txt b/spec/output/empty_contiguous-including-threads_cpusets_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_contiguous-including-threads_cpusets_diff_stdout.txt b/spec/output/empty_contiguous-including-threads_cpusets_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..208e0aee2bae6de8d706c19eeff9a31b8746548e
--- /dev/null
+++ b/spec/output/empty_contiguous-including-threads_cpusets_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "GIGABYTE R181-T92-00 GJG5N9812A0001"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "aarch64"]
+    ["+", "cpucore", 32]
+    ["+", "cpufreq", "2.2"]
+    ["+", "cputype", "ThunderX2 99xx"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SAS/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.54.1"]
+    ["+", "maintenance", "YES"]
+    ["+", "max_walltime", 0]
+    ["+", "memcore", 4096]
+    ["+", "memcpu", 131072]
+    ["+", "memnode", 262144]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "NO"]
+    ["+", "switch", "gw"]
+    ["+", "virtual", "arm64"]
+    ["+", "wattmeter", "NO"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "GIGABYTE R181-T92-00 GJG5N9812A0004"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "aarch64"]
+    ["+", "cpucore", 32]
+    ["+", "cpufreq", "2.2"]
+    ["+", "cputype", "ThunderX2 99xx"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SAS/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.54.2"]
+    ["+", "maintenance", "YES"]
+    ["+", "max_walltime", 0]
+    ["+", "memcore", 4096]
+    ["+", "memcpu", 131072]
+    ["+", "memnode", 262144]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "NO"]
+    ["+", "switch", "gw"]
+    ["+", "virtual", "arm64"]
+    ["+", "wattmeter", "NO"]
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/empty_contiguous-including-threads_cpusets_print_stderr.txt b/spec/output/empty_contiguous-including-threads_cpusets_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_contiguous-including-threads_cpusets_print_stdout.txt b/spec/output/empty_contiguous-including-threads_cpusets_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a3a8377de294384b7d6470ceec5e83ea2d059751
--- /dev/null
+++ b/spec/output/empty_contiguous-including-threads_cpusets_print_stdout.txt
@@ -0,0 +1,231 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=5 -p cpuset=4
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=6 -p cpuset=5
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=7 -p cpuset=6
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=8 -p cpuset=7
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=9 -p cpuset=8
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=10 -p cpuset=9
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=11 -p cpuset=10
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=12 -p cpuset=11
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=13 -p cpuset=12
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=14 -p cpuset=13
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=15 -p cpuset=14
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=16 -p cpuset=15
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=17 -p cpuset=16
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=18 -p cpuset=17
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=19 -p cpuset=18
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=20 -p cpuset=19
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=21 -p cpuset=20
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=22 -p cpuset=21
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=23 -p cpuset=22
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=24 -p cpuset=23
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=25 -p cpuset=24
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=26 -p cpuset=25
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=27 -p cpuset=26
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=28 -p cpuset=27
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=29 -p cpuset=28
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=30 -p cpuset=29
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=31 -p cpuset=30
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=32 -p cpuset=31
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=33 -p cpuset=128
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=34 -p cpuset=129
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=35 -p cpuset=130
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=36 -p cpuset=131
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=37 -p cpuset=132
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=38 -p cpuset=133
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=39 -p cpuset=134
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=40 -p cpuset=135
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=41 -p cpuset=136
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=42 -p cpuset=137
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=43 -p cpuset=138
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=44 -p cpuset=139
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=45 -p cpuset=140
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=46 -p cpuset=141
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=47 -p cpuset=142
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=48 -p cpuset=143
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=49 -p cpuset=144
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=50 -p cpuset=145
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=51 -p cpuset=146
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=52 -p cpuset=147
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=53 -p cpuset=148
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=54 -p cpuset=149
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=55 -p cpuset=150
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=56 -p cpuset=151
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=57 -p cpuset=152
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=58 -p cpuset=153
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=59 -p cpuset=154
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=60 -p cpuset=155
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=61 -p cpuset=156
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=62 -p cpuset=157
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=63 -p cpuset=158
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=64 -p cpuset=159
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.54.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='arm64' -p cpuarch='aarch64' -p cpucore=32 -p cputype='ThunderX2 99xx' -p cpufreq='2.2' -p disktype='SAS/SSD' -p chassis='GIGABYTE R181-T92-00 GJG5N9812A0001' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=131072 -p memnode=262144 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201906 -p max_walltime=0 -p production='NO' -p maintenance='YES' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=65 -p cpuset=0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=66 -p cpuset=1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=67 -p cpuset=2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=68 -p cpuset=3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=69 -p cpuset=4
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=70 -p cpuset=5
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=71 -p cpuset=6
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=72 -p cpuset=7
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=73 -p cpuset=8
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=74 -p cpuset=9
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=75 -p cpuset=10
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=76 -p cpuset=11
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=77 -p cpuset=12
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=78 -p cpuset=13
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=79 -p cpuset=14
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=80 -p cpuset=15
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=81 -p cpuset=16
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=82 -p cpuset=17
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=83 -p cpuset=18
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=84 -p cpuset=19
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=85 -p cpuset=20
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=86 -p cpuset=21
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=87 -p cpuset=22
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=88 -p cpuset=23
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=89 -p cpuset=24
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=90 -p cpuset=25
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=91 -p cpuset=26
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=92 -p cpuset=27
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=93 -p cpuset=28
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=94 -p cpuset=29
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=95 -p cpuset=30
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=96 -p cpuset=31
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=97 -p cpuset=128
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=98 -p cpuset=129
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=99 -p cpuset=130
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=100 -p cpuset=131
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=101 -p cpuset=132
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=102 -p cpuset=133
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=103 -p cpuset=134
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=104 -p cpuset=135
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=105 -p cpuset=136
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=106 -p cpuset=137
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=107 -p cpuset=138
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=108 -p cpuset=139
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=109 -p cpuset=140
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=110 -p cpuset=141
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=111 -p cpuset=142
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=112 -p cpuset=143
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=113 -p cpuset=144
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=114 -p cpuset=145
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=115 -p cpuset=146
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=116 -p cpuset=147
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=117 -p cpuset=148
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=118 -p cpuset=149
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=119 -p cpuset=150
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=120 -p cpuset=151
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=121 -p cpuset=152
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=122 -p cpuset=153
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=123 -p cpuset=154
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=124 -p cpuset=155
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=125 -p cpuset=156
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=126 -p cpuset=157
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=127 -p cpuset=158
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=128 -p cpuset=159
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.54.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='arm64' -p cpuarch='aarch64' -p cpucore=32 -p cputype='ThunderX2 99xx' -p cpufreq='2.2' -p disktype='SAS/SSD' -p chassis='GIGABYTE R181-T92-00 GJG5N9812A0004' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=131072 -p memnode=262144 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201906 -p max_walltime=0 -p production='NO' -p maintenance='YES' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/empty_contiguous-including-threads_cpusets_table_stderr.txt b/spec/output/empty_contiguous-including-threads_cpusets_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_contiguous-including-threads_cpusets_table_stdout.txt b/spec/output/empty_contiguous-including-threads_cpusets_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..04ab6b2361d01f65ac6182817695f8c29ed64933
--- /dev/null
+++ b/spec/output/empty_contiguous-including-threads_cpusets_table_stdout.txt
@@ -0,0 +1,132 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 2     | 1        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 3     | 2        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 4     | 3        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 5     | 4        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 6     | 5        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 7     | 6        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 8     | 7        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 9     | 8        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 10    | 9        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 11    | 10       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 12    | 11       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 13    | 12       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 14    | 13       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 15    | 14       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 16    | 15       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 17    | 16       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 18    | 17       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 19    | 18       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 20    | 19       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 21    | 20       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 22    | 21       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 23    | 22       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 24    | 23       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 25    | 24       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 26    | 25       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 27    | 26       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 28    | 27       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 29    | 28       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 30    | 29       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 31    | 30       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 1     | 32    | 31       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 33    | 128      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 34    | 129      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 35    | 130      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 36    | 131      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 37    | 132      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 38    | 133      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 39    | 134      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 40    | 135      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 41    | 136      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 42    | 137      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 43    | 138      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 44    | 139      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 45    | 140      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 46    | 141      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 47    | 142      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 48    | 143      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 49    | 144      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 50    | 145      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 51    | 146      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 52    | 147      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 53    | 148      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 54    | 149      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 55    | 150      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 56    | 151      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 57    | 152      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 58    | 153      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 59    | 154      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 60    | 155      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 61    | 156      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 62    | 157      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 63    | 158      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-1           | 2     | 64    | 159      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 65    | 0        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 66    | 1        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 67    | 2        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 68    | 3        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 69    | 4        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 70    | 5        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 71    | 6        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 72    | 7        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 73    | 8        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 74    | 9        |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 75    | 10       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 76    | 11       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 77    | 12       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 78    | 13       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 79    | 14       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 80    | 15       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 81    | 16       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 82    | 17       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 83    | 18       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 84    | 19       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 85    | 20       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 86    | 21       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 87    | 22       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 88    | 23       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 89    | 24       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 90    | 25       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 91    | 26       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 92    | 27       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 93    | 28       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 94    | 29       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 95    | 30       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 3     | 96    | 31       |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 97    | 128      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 98    | 129      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 99    | 130      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 100   | 131      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 101   | 132      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 102   | 133      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 103   | 134      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 104   | 135      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 105   | 136      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 106   | 137      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 107   | 138      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 108   | 139      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 109   | 140      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 110   | 141      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 111   | 142      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 112   | 143      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 113   | 144      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 114   | 145      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 115   | 146      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 116   | 147      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 117   | 148      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 118   | 149      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 119   | 150      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 120   | 151      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 121   | 152      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 122   | 153      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 123   | 154      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 124   | 155      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 125   | 156      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 126   | 157      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 127   | 158      |      |                      | ThunderX2 99xx                 |                               |
+|  clustera | clustera-2           | 4     | 128   | 159      |      |                      | ThunderX2 99xx                 |                               |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/empty_diff_stderr.txt b/spec/output/empty_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_diff_stdout.txt b/spec/output/empty_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..adb7d62d64808c73db78e733e4aa3bcc0c18ea9c
--- /dev/null
+++ b/spec/output/empty_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/empty_print_stderr.txt b/spec/output/empty_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_print_stdout.txt b/spec/output/empty_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eb8fa885c50913c5ce4fd50d0a67a3fa7463e412
--- /dev/null
+++ b/spec/output/empty_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/empty_round_robin_diff_stderr.txt b/spec/output/empty_round_robin_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_round_robin_diff_stdout.txt b/spec/output/empty_round_robin_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..adb7d62d64808c73db78e733e4aa3bcc0c18ea9c
--- /dev/null
+++ b/spec/output/empty_round_robin_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/empty_round_robin_print_stderr.txt b/spec/output/empty_round_robin_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_round_robin_print_stdout.txt b/spec/output/empty_round_robin_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e45a590309593b5b33efd330240f8f9fd97ad04a
--- /dev/null
+++ b/spec/output/empty_round_robin_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=4 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=6 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=5 -p cpuset=8 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=6 -p cpuset=10 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=7 -p cpuset=12 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=8 -p cpuset=14 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=9 -p cpuset=1 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=10 -p cpuset=3 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=11 -p cpuset=5 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=12 -p cpuset=7 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=13 -p cpuset=9 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=14 -p cpuset=11 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=18 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=19 -p cpuset=4 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=20 -p cpuset=6 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=21 -p cpuset=8 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=22 -p cpuset=10 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=23 -p cpuset=12 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=24 -p cpuset=14 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=25 -p cpuset=1 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=26 -p cpuset=3 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=27 -p cpuset=5 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=28 -p cpuset=7 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=9 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=11 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/empty_round_robin_table_stderr.txt b/spec/output/empty_round_robin_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_round_robin_table_stdout.txt b/spec/output/empty_round_robin_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..45b1de4234d26f8800445328c1213f183fab7c84
--- /dev/null
+++ b/spec/output/empty_round_robin_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 4        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 6        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 8        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 10       | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 12       | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 14       | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 1        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 3        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 5        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 7        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 9        | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 11       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 4        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 6        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 8        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 10       | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 12       | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 14       | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 1        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 3        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 5        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 7        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 9        | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 11       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/empty_table_stderr.txt b/spec/output/empty_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_table_stdout.txt b/spec/output/empty_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/empty_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/empty_with_disk_diff_stderr.txt b/spec/output/empty_with_disk_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_with_disk_diff_stdout.txt b/spec/output/empty_with_disk_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..adb7d62d64808c73db78e733e4aa3bcc0c18ea9c
--- /dev/null
+++ b/spec/output/empty_with_disk_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/empty_with_disk_print_stderr.txt b/spec/output/empty_with_disk_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_with_disk_print_stdout.txt b/spec/output/empty_with_disk_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a25e943a98d94a0c0f84fd9db83d1ba34bb14beb
--- /dev/null
+++ b/spec/output/empty_with_disk_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/empty_with_disk_table_stderr.txt b/spec/output/empty_with_disk_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_with_disk_table_stdout.txt b/spec/output/empty_with_disk_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/empty_with_disk_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/empty_without_gpu_diff_stderr.txt b/spec/output/empty_without_gpu_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_without_gpu_diff_stdout.txt b/spec/output/empty_without_gpu_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..adb7d62d64808c73db78e733e4aa3bcc0c18ea9c
--- /dev/null
+++ b/spec/output/empty_without_gpu_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/empty_without_gpu_print_stderr.txt b/spec/output/empty_without_gpu_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_without_gpu_print_stdout.txt b/spec/output/empty_without_gpu_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a25e943a98d94a0c0f84fd9db83d1ba34bb14beb
--- /dev/null
+++ b/spec/output/empty_without_gpu_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/empty_without_gpu_table_stderr.txt b/spec/output/empty_without_gpu_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/empty_without_gpu_table_stdout.txt b/spec/output/empty_without_gpu_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/empty_without_gpu_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/graffiti-all-gpus_diff_stdout.txt b/spec/output/graffiti-all-gpus_diff_stdout.txt
index 4295b7e7de5ffa834362b4db823c7d0a90597611..924b17c1cf1f53aae8c1f23cf5b17f85b1db0f61 100644
--- a/spec/output/graffiti-all-gpus_diff_stdout.txt
+++ b/spec/output/graffiti-all-gpus_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: OK
   clustera-2: OK
diff --git a/spec/output/graffiti-all-gpus_print_stdout.txt b/spec/output/graffiti-all-gpus_print_stdout.txt
index be2c5eb5a7ee7f8112b1cdbba597d105660c41d2..7191d1c86d73d8940a0bb188cee67686b7fd0dd3 100644
--- a/spec/output/graffiti-all-gpus_print_stdout.txt
+++ b/spec/output/graffiti-all-gpus_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -104,7 +105,7 @@ oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9664'
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9665' AND type='default'" -p cpu=1616 -p core=8541 -p cpuset=13 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9666' AND type='default'" -p cpu=1616 -p core=8542 -p cpuset=15 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-1.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -129,7 +130,7 @@ oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9680'
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9681' AND type='default'" -p cpu=1618 -p core=8557 -p cpuset=13 -p gpu=60 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9682' AND type='default'" -p cpu=1618 -p core=8558 -p cpuset=15 -p gpu=60 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-2.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -154,7 +155,7 @@ oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9696'
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9697' AND type='default'" -p cpu=1620 -p core=8573 -p cpuset=13 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9698' AND type='default'" -p cpu=1620 -p core=8574 -p cpuset=15 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-3.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -179,7 +180,7 @@ oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9712'
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9713' AND type='default'" -p cpu=1622 -p core=8589 -p cpuset=13 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9714' AND type='default'" -p cpu=1622 -p core=8590 -p cpuset=15 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-4.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -204,7 +205,7 @@ oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9728'
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9729' AND type='default'" -p cpu=1624 -p core=8605 -p cpuset=13 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9730' AND type='default'" -p cpu=1624 -p core=8606 -p cpuset=15 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-5.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -229,7 +230,7 @@ oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9744'
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9745' AND type='default'" -p cpu=1626 -p core=8621 -p cpuset=13 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9746' AND type='default'" -p cpu=1626 -p core=8622 -p cpuset=15 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-6.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -254,7 +255,7 @@ oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9760'
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9761' AND type='default'" -p cpu=1628 -p core=8637 -p cpuset=13 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9762' AND type='default'" -p cpu=1628 -p core=8638 -p cpuset=15 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-7.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -279,7 +280,7 @@ oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9776'
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9777' AND type='default'" -p cpu=1630 -p core=8653 -p cpuset=13 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9778' AND type='default'" -p cpu=1630 -p core=8654 -p cpuset=15 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-8.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -304,7 +305,7 @@ oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9792'
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9793' AND type='default'" -p cpu=1632 -p core=8669 -p cpuset=13 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9794' AND type='default'" -p cpu=1632 -p core=8670 -p cpuset=15 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-9.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -329,7 +330,7 @@ oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9808
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9809' AND type='default'" -p cpu=1634 -p core=8685 -p cpuset=13 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9810' AND type='default'" -p cpu=1634 -p core=8686 -p cpuset=15 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-10.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -354,7 +355,7 @@ oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9824
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9825' AND type='default'" -p cpu=1636 -p core=8701 -p cpuset=13 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9826' AND type='default'" -p cpu=1636 -p core=8702 -p cpuset=15 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-11.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -379,7 +380,7 @@ oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9840
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9841' AND type='default'" -p cpu=1638 -p core=8717 -p cpuset=13 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9842' AND type='default'" -p cpu=1638 -p core=8718 -p cpuset=15 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-12.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -404,6 +405,6 @@ oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9856
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9857' AND type='default'" -p cpu=1640 -p core=8733 -p cpuset=13 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9858' AND type='default'" -p cpu=1640 -p core=8734 -p cpuset=15 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-13.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_diff_stdout.txt b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_diff_stdout.txt
index 4295b7e7de5ffa834362b4db823c7d0a90597611..924b17c1cf1f53aae8c1f23cf5b17f85b1db0f61 100644
--- a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_diff_stdout.txt
+++ b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: OK
   clustera-2: OK
diff --git a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_print_stdout.txt b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_print_stdout.txt
index be2c5eb5a7ee7f8112b1cdbba597d105660c41d2..7191d1c86d73d8940a0bb188cee67686b7fd0dd3 100644
--- a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_print_stdout.txt
+++ b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added-OAR-updated_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -104,7 +105,7 @@ oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9664'
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9665' AND type='default'" -p cpu=1616 -p core=8541 -p cpuset=13 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9666' AND type='default'" -p cpu=1616 -p core=8542 -p cpuset=15 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-1.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -129,7 +130,7 @@ oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9680'
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9681' AND type='default'" -p cpu=1618 -p core=8557 -p cpuset=13 -p gpu=60 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9682' AND type='default'" -p cpu=1618 -p core=8558 -p cpuset=15 -p gpu=60 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-2.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -154,7 +155,7 @@ oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9696'
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9697' AND type='default'" -p cpu=1620 -p core=8573 -p cpuset=13 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9698' AND type='default'" -p cpu=1620 -p core=8574 -p cpuset=15 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-3.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -179,7 +180,7 @@ oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9712'
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9713' AND type='default'" -p cpu=1622 -p core=8589 -p cpuset=13 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9714' AND type='default'" -p cpu=1622 -p core=8590 -p cpuset=15 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-4.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -204,7 +205,7 @@ oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9728'
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9729' AND type='default'" -p cpu=1624 -p core=8605 -p cpuset=13 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9730' AND type='default'" -p cpu=1624 -p core=8606 -p cpuset=15 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-5.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -229,7 +230,7 @@ oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9744'
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9745' AND type='default'" -p cpu=1626 -p core=8621 -p cpuset=13 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9746' AND type='default'" -p cpu=1626 -p core=8622 -p cpuset=15 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-6.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -254,7 +255,7 @@ oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9760'
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9761' AND type='default'" -p cpu=1628 -p core=8637 -p cpuset=13 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9762' AND type='default'" -p cpu=1628 -p core=8638 -p cpuset=15 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-7.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -279,7 +280,7 @@ oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9776'
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9777' AND type='default'" -p cpu=1630 -p core=8653 -p cpuset=13 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9778' AND type='default'" -p cpu=1630 -p core=8654 -p cpuset=15 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-8.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -304,7 +305,7 @@ oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9792'
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9793' AND type='default'" -p cpu=1632 -p core=8669 -p cpuset=13 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9794' AND type='default'" -p cpu=1632 -p core=8670 -p cpuset=15 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-9.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -329,7 +330,7 @@ oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9808
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9809' AND type='default'" -p cpu=1634 -p core=8685 -p cpuset=13 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9810' AND type='default'" -p cpu=1634 -p core=8686 -p cpuset=15 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-10.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -354,7 +355,7 @@ oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9824
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9825' AND type='default'" -p cpu=1636 -p core=8701 -p cpuset=13 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9826' AND type='default'" -p cpu=1636 -p core=8702 -p cpuset=15 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-11.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -379,7 +380,7 @@ oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9840
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9841' AND type='default'" -p cpu=1638 -p core=8717 -p cpuset=13 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9842' AND type='default'" -p cpu=1638 -p core=8718 -p cpuset=15 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-12.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -404,6 +405,6 @@ oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9856
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9857' AND type='default'" -p cpu=1640 -p core=8733 -p cpuset=13 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9858' AND type='default'" -p cpu=1640 -p core=8734 -p cpuset=15 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-13.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_diff_stdout.txt b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_diff_stdout.txt
index 677010e18818c2a3d8bb0de5e3c159595fe0cc6a..871c7ae63634a032f5b4810d6a70e6c791ee2739 100644
--- a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_diff_stdout.txt
+++ b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 GPU has an unexpected number of resources (current:51 vs expected:52).
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: OK
diff --git a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_print_stdout.txt b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_print_stdout.txt
index 4ed238ba1ad04de912289d6c3fb589b3f4d0fc03..4f4ac7cffc1fc28cc7b42bfa8453c4e46aa86772 100644
--- a/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_print_stdout.txt
+++ b/spec/output/graffiti-gpu-removed-OAR-updated-gpu-re-added_print_stdout.txt
@@ -74,6 +74,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -105,7 +106,7 @@ oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9664'
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9665' AND type='default'" -p cpu=1616 -p core=8541 -p cpuset=13 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9666' AND type='default'" -p cpu=1616 -p core=8542 -p cpuset=15 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-1.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -130,7 +131,7 @@ oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9680'
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9681' AND type='default'" -p cpu=1618 -p core=8557 -p cpuset=13 -p gpu=60 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9682' AND type='default'" -p cpu=1618 -p core=8558 -p cpuset=15 -p gpu=60 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-2.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -155,7 +156,7 @@ oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9696'
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9697' AND type='default'" -p cpu=1620 -p core=8573 -p cpuset=13 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9698' AND type='default'" -p cpu=1620 -p core=8574 -p cpuset=15 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-3.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -180,7 +181,7 @@ oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9712'
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9713' AND type='default'" -p cpu=1622 -p core=8589 -p cpuset=13 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9714' AND type='default'" -p cpu=1622 -p core=8590 -p cpuset=15 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-4.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -205,7 +206,7 @@ oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9728'
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9729' AND type='default'" -p cpu=1624 -p core=8605 -p cpuset=13 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9730' AND type='default'" -p cpu=1624 -p core=8606 -p cpuset=15 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-5.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -230,7 +231,7 @@ oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9744'
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9745' AND type='default'" -p cpu=1626 -p core=8621 -p cpuset=13 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9746' AND type='default'" -p cpu=1626 -p core=8622 -p cpuset=15 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-6.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -255,7 +256,7 @@ oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9760'
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9761' AND type='default'" -p cpu=1628 -p core=8637 -p cpuset=13 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9762' AND type='default'" -p cpu=1628 -p core=8638 -p cpuset=15 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-7.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -280,7 +281,7 @@ oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9776'
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9777' AND type='default'" -p cpu=1630 -p core=8653 -p cpuset=13 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9778' AND type='default'" -p cpu=1630 -p core=8654 -p cpuset=15 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-8.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -305,7 +306,7 @@ oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9792'
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9793' AND type='default'" -p cpu=1632 -p core=8669 -p cpuset=13 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9794' AND type='default'" -p cpu=1632 -p core=8670 -p cpuset=15 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-9.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -330,7 +331,7 @@ oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9808
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9809' AND type='default'" -p cpu=1634 -p core=8685 -p cpuset=13 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9810' AND type='default'" -p cpu=1634 -p core=8686 -p cpuset=15 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-10.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -355,7 +356,7 @@ oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9824
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9825' AND type='default'" -p cpu=1636 -p core=8701 -p cpuset=13 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9826' AND type='default'" -p cpu=1636 -p core=8702 -p cpuset=15 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-11.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -380,7 +381,7 @@ oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9840
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9841' AND type='default'" -p cpu=1638 -p core=8717 -p cpuset=13 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9842' AND type='default'" -p cpu=1638 -p core=8718 -p cpuset=15 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-12.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -405,6 +406,6 @@ oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9856
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9857' AND type='default'" -p cpu=1640 -p core=8733 -p cpuset=13 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9858' AND type='default'" -p cpu=1640 -p core=8734 -p cpuset=15 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-13.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/graffiti-gpu-removed-OAR-updated_diff_stdout.txt b/spec/output/graffiti-gpu-removed-OAR-updated_diff_stdout.txt
index 4295b7e7de5ffa834362b4db823c7d0a90597611..924b17c1cf1f53aae8c1f23cf5b17f85b1db0f61 100644
--- a/spec/output/graffiti-gpu-removed-OAR-updated_diff_stdout.txt
+++ b/spec/output/graffiti-gpu-removed-OAR-updated_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: OK
   clustera-2: OK
diff --git a/spec/output/graffiti-gpu-removed-OAR-updated_print_stdout.txt b/spec/output/graffiti-gpu-removed-OAR-updated_print_stdout.txt
index 18147c47603fd774c92fb681c114a530f798198b..68bb848fb7ffc5f97e1d943e34b56d7e542943b7 100644
--- a/spec/output/graffiti-gpu-removed-OAR-updated_print_stdout.txt
+++ b/spec/output/graffiti-gpu-removed-OAR-updated_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -104,7 +105,7 @@ oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9664'
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9665' AND type='default'" -p cpu=1616 -p core=8541 -p cpuset=13 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9666' AND type='default'" -p cpu=1616 -p core=8542 -p cpuset=15 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-1.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -129,7 +130,7 @@ oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9680'
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9681' AND type='default'" -p cpu=1618 -p core=8557 -p cpuset=13 -p gpu=59 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9682' AND type='default'" -p cpu=1618 -p core=8558 -p cpuset=15 -p gpu=59 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-2.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=3 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=3 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -154,7 +155,7 @@ oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9696'
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9697' AND type='default'" -p cpu=1620 -p core=8573 -p cpuset=13 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9698' AND type='default'" -p cpu=1620 -p core=8574 -p cpuset=15 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-3.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -179,7 +180,7 @@ oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9712'
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9713' AND type='default'" -p cpu=1622 -p core=8589 -p cpuset=13 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9714' AND type='default'" -p cpu=1622 -p core=8590 -p cpuset=15 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-4.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -204,7 +205,7 @@ oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9728'
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9729' AND type='default'" -p cpu=1624 -p core=8605 -p cpuset=13 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9730' AND type='default'" -p cpu=1624 -p core=8606 -p cpuset=15 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-5.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -229,7 +230,7 @@ oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9744'
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9745' AND type='default'" -p cpu=1626 -p core=8621 -p cpuset=13 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9746' AND type='default'" -p cpu=1626 -p core=8622 -p cpuset=15 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-6.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -254,7 +255,7 @@ oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9760'
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9761' AND type='default'" -p cpu=1628 -p core=8637 -p cpuset=13 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9762' AND type='default'" -p cpu=1628 -p core=8638 -p cpuset=15 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-7.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -279,7 +280,7 @@ oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9776'
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9777' AND type='default'" -p cpu=1630 -p core=8653 -p cpuset=13 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9778' AND type='default'" -p cpu=1630 -p core=8654 -p cpuset=15 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-8.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -304,7 +305,7 @@ oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9792'
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9793' AND type='default'" -p cpu=1632 -p core=8669 -p cpuset=13 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9794' AND type='default'" -p cpu=1632 -p core=8670 -p cpuset=15 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-9.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -329,7 +330,7 @@ oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9808
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9809' AND type='default'" -p cpu=1634 -p core=8685 -p cpuset=13 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9810' AND type='default'" -p cpu=1634 -p core=8686 -p cpuset=15 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-10.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -354,7 +355,7 @@ oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9824
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9825' AND type='default'" -p cpu=1636 -p core=8701 -p cpuset=13 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9826' AND type='default'" -p cpu=1636 -p core=8702 -p cpuset=15 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-11.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -379,7 +380,7 @@ oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9840
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9841' AND type='default'" -p cpu=1638 -p core=8717 -p cpuset=13 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9842' AND type='default'" -p cpu=1638 -p core=8718 -p cpuset=15 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-12.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -404,6 +405,6 @@ oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9856
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9857' AND type='default'" -p cpu=1640 -p core=8733 -p cpuset=13 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9858' AND type='default'" -p cpu=1640 -p core=8734 -p cpuset=15 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-13.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/graffiti-gpu-removed_diff_stdout.txt b/spec/output/graffiti-gpu-removed_diff_stdout.txt
index 3068a0adede74361d16d01d8355291ccaa90f6ca..2472b458241455d855821489a156af3b8d275342 100644
--- a/spec/output/graffiti-gpu-removed_diff_stdout.txt
+++ b/spec/output/graffiti-gpu-removed_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 GPU has an unexpected number of resources (current:52 vs expected:51).
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: OK
diff --git a/spec/output/graffiti-gpu-removed_print_stdout.txt b/spec/output/graffiti-gpu-removed_print_stdout.txt
index c229553a6598a9562bb07a7194732d5eec1cc80b..4aee4368a12f4c9d8f528f7eaa495bb2b571ac6f 100644
--- a/spec/output/graffiti-gpu-removed_print_stdout.txt
+++ b/spec/output/graffiti-gpu-removed_print_stdout.txt
@@ -74,6 +74,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -105,7 +106,7 @@ oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9664'
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9665' AND type='default'" -p cpu=1616 -p core=8541 -p cpuset=13 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='9666' AND type='default'" -p cpu=1616 -p core=8542 -p cpuset=15 -p gpu=56 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-1.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -130,7 +131,7 @@ oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9680'
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9681' AND type='default'" -p cpu=1618 -p core=8557 -p cpuset=13 -p gpu=59 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='9682' AND type='default'" -p cpu=1618 -p core=8558 -p cpuset=15 -p gpu=59 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-2.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=3 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=3 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -155,7 +156,7 @@ oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9696'
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9697' AND type='default'" -p cpu=1620 -p core=8573 -p cpuset=13 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='9698' AND type='default'" -p cpu=1620 -p core=8574 -p cpuset=15 -p gpu=64 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-3.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -180,7 +181,7 @@ oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9712'
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9713' AND type='default'" -p cpu=1622 -p core=8589 -p cpuset=13 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='9714' AND type='default'" -p cpu=1622 -p core=8590 -p cpuset=15 -p gpu=68 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-4.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -205,7 +206,7 @@ oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9728'
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9729' AND type='default'" -p cpu=1624 -p core=8605 -p cpuset=13 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='9730' AND type='default'" -p cpu=1624 -p core=8606 -p cpuset=15 -p gpu=72 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-5.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -230,7 +231,7 @@ oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9744'
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9745' AND type='default'" -p cpu=1626 -p core=8621 -p cpuset=13 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' AND resource_id='9746' AND type='default'" -p cpu=1626 -p core=8622 -p cpuset=15 -p gpu=76 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-6.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -255,7 +256,7 @@ oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9760'
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9761' AND type='default'" -p cpu=1628 -p core=8637 -p cpuset=13 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' AND resource_id='9762' AND type='default'" -p cpu=1628 -p core=8638 -p cpuset=15 -p gpu=80 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-7.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -280,7 +281,7 @@ oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9776'
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9777' AND type='default'" -p cpu=1630 -p core=8653 -p cpuset=13 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' AND resource_id='9778' AND type='default'" -p cpu=1630 -p core=8654 -p cpuset=15 -p gpu=84 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-8.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -305,7 +306,7 @@ oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9792'
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9793' AND type='default'" -p cpu=1632 -p core=8669 -p cpuset=13 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' AND resource_id='9794' AND type='default'" -p cpu=1632 -p core=8670 -p cpuset=15 -p gpu=88 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-9.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-9.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -330,7 +331,7 @@ oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9808
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9809' AND type='default'" -p cpu=1634 -p core=8685 -p cpuset=13 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' AND resource_id='9810' AND type='default'" -p cpu=1634 -p core=8686 -p cpuset=15 -p gpu=92 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-10.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-10.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -355,7 +356,7 @@ oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9824
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9825' AND type='default'" -p cpu=1636 -p core=8701 -p cpuset=13 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' AND resource_id='9826' AND type='default'" -p cpu=1636 -p core=8702 -p cpuset=15 -p gpu=96 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-11.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-11.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -380,7 +381,7 @@ oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9840
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9841' AND type='default'" -p cpu=1638 -p core=8717 -p cpuset=13 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' AND resource_id='9842' AND type='default'" -p cpu=1638 -p core=8718 -p cpuset=15 -p gpu=100 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-12.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-12.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -405,6 +406,6 @@ oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9856
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9857' AND type='default'" -p cpu=1640 -p core=8733 -p cpuset=13 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' AND resource_id='9858' AND type='default'" -p cpu=1640 -p core=8734 -p cpuset=15 -p gpu=104 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-13.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-13.nancy.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/graffiti_empty_diff_stdout.txt b/spec/output/graffiti_empty_diff_stdout.txt
index cfb7afbde88d8f4929dc5027ca2ff8fe388bc7c8..31fe24c40d40d72c1ff61e5e4f7e29f1d06e8e45 100644
--- a/spec/output/graffiti_empty_diff_stdout.txt
+++ b/spec/output/graffiti_empty_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: new node !
     ["+", "besteffort", "YES"]
@@ -17,6 +15,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -53,6 +52,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -89,6 +89,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -125,6 +126,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -161,6 +163,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -197,6 +200,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -233,6 +237,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -269,6 +274,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -305,6 +311,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -341,6 +348,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -377,6 +385,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -413,6 +422,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -449,6 +459,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -469,4 +480,4 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "switch", "gw"]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "MULTIPLE"]
-Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/graffiti_empty_print_stdout.txt b/spec/output/graffiti_empty_print_stdout.txt
index 2ed2a14a523aede9a5d28aa05dd7e53d9a2d523c..16b4db3e4044380e72a22c7d475be7d822d35955 100644
--- a/spec/output/graffiti_empty_print_stdout.txt
+++ b/spec/output/graffiti_empty_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -104,7 +105,7 @@ oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -129,7 +130,7 @@ oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -154,7 +155,7 @@ oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=13 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -179,7 +180,7 @@ oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=13 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 DL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -204,7 +205,7 @@ oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=79 -p cpuset=13 -p gpu=20 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=80 -p cpuset=15 -p gpu=20 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -229,7 +230,7 @@ oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='clustera-6.fakesite.grid5000.fr' -p cpu=12 -p core=95 -p cpuset=13 -p gpu=24 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='clustera-6.fakesite.grid5000.fr' -p cpu=12 -p core=96 -p cpuset=15 -p gpu=24 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 8K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -254,7 +255,7 @@ oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='clustera-7.fakesite.grid5000.fr' -p cpu=14 -p core=111 -p cpuset=13 -p gpu=28 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='clustera-7.fakesite.grid5000.fr' -p cpu=14 -p core=112 -p cpuset=15 -p gpu=28 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 BK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -279,7 +280,7 @@ oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='clustera-8.fakesite.grid5000.fr' -p cpu=16 -p core=127 -p cpuset=13 -p gpu=32 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='clustera-8.fakesite.grid5000.fr' -p cpu=16 -p core=128 -p cpuset=15 -p gpu=32 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 CK1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -304,7 +305,7 @@ oarnodesetting -a -h 'clustera-9.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-9.fakesite.grid5000.fr' -s Absent -p host='clustera-9.fakesite.grid5000.fr' -p cpu=18 -p core=143 -p cpuset=13 -p gpu=36 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-9.fakesite.grid5000.fr' -s Absent -p host='clustera-9.fakesite.grid5000.fr' -p cpu=18 -p core=144 -p cpuset=15 -p gpu=36 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-9.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-9.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-9.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.9' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -329,7 +330,7 @@ oarnodesetting -a -h 'clustera-10.fakesite.grid5000.fr' -s Absent -p host='clust
 oarnodesetting -a -h 'clustera-10.fakesite.grid5000.fr' -s Absent -p host='clustera-10.fakesite.grid5000.fr' -p cpu=20 -p core=159 -p cpuset=13 -p gpu=40 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-10.fakesite.grid5000.fr' -s Absent -p host='clustera-10.fakesite.grid5000.fr' -p cpu=20 -p core=160 -p cpuset=15 -p gpu=40 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-10.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-10.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-10.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.10' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 GL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -354,7 +355,7 @@ oarnodesetting -a -h 'clustera-11.fakesite.grid5000.fr' -s Absent -p host='clust
 oarnodesetting -a -h 'clustera-11.fakesite.grid5000.fr' -s Absent -p host='clustera-11.fakesite.grid5000.fr' -p cpu=22 -p core=175 -p cpuset=13 -p gpu=44 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-11.fakesite.grid5000.fr' -s Absent -p host='clustera-11.fakesite.grid5000.fr' -p cpu=22 -p core=176 -p cpuset=15 -p gpu=44 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-11.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-11.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-11.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.11' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 JL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -379,7 +380,7 @@ oarnodesetting -a -h 'clustera-12.fakesite.grid5000.fr' -s Absent -p host='clust
 oarnodesetting -a -h 'clustera-12.fakesite.grid5000.fr' -s Absent -p host='clustera-12.fakesite.grid5000.fr' -p cpu=24 -p core=191 -p cpuset=13 -p gpu=48 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-12.fakesite.grid5000.fr' -s Absent -p host='clustera-12.fakesite.grid5000.fr' -p cpu=24 -p core=192 -p cpuset=15 -p gpu=48 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-12.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-12.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-12.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.12' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 HL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -404,6 +405,6 @@ oarnodesetting -a -h 'clustera-13.fakesite.grid5000.fr' -s Absent -p host='clust
 oarnodesetting -a -h 'clustera-13.fakesite.grid5000.fr' -s Absent -p host='clustera-13.fakesite.grid5000.fr' -p cpu=26 -p core=207 -p cpuset=13 -p gpu=52 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-13.fakesite.grid5000.fr' -s Absent -p host='clustera-13.fakesite.grid5000.fr' -p cpu=26 -p core=208 -p cpuset=15 -p gpu=52 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 echo; echo 'Setting properties for clustera-13.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-13.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-13.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.13' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 7K1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/graphite_empty_diff_stdout.txt b/spec/output/graphite_empty_diff_stdout.txt
index 6801eaffaf1655acb090df084ca2334dc53c8bf2..5381e9b2b456f1b99ddbabca54e6e1be82b87d61 100644
--- a/spec/output/graphite_empty_diff_stdout.txt
+++ b/spec/output/graphite_empty_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: new node !
     ["+", "besteffort", "YES"]
@@ -17,6 +15,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -53,6 +52,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -89,6 +89,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -125,6 +126,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -145,4 +147,4 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "switch", "gw"]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "MULTIPLE"]
-Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/graphite_empty_print_stdout.txt b/spec/output/graphite_empty_print_stdout.txt
index dd66c61bd8797649ae3809196c247ac28500b22d..7758cb46f7a5f2ca9cb3e3af6ce59967db347986 100644
--- a/spec/output/graphite_empty_print_stdout.txt
+++ b/spec/output/graphite_empty_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -104,7 +105,7 @@ oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=13
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15
 echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 27Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 27Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -129,7 +130,7 @@ oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=13
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15
 echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 B6Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 B6Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -154,7 +155,7 @@ oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=13
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15
 echo; echo 'Setting properties for clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 G5Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 G5Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -179,6 +180,6 @@ oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=13
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15
 echo; echo 'Setting properties for clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 66Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.68.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R720' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2650' -p cpufreq='2.0' -p disktype='SATA II/SSD' -p chassis='Dell Inc. PowerEdge R720 66Q7NZ1' -p eth_count=1 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=16384 -p memcpu=131072 -p memnode=262144 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='YES' -p wattmeter='MULTIPLE' -p cluster_priority=201312 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/grimoire_empty_diff_stdout.txt b/spec/output/grimoire_empty_diff_stdout.txt
index 2287d6ce29458468cac98b8fdb0578d5981c094f..55c4f9241df4fffdf27742e10e6b929d3f0ecbdf 100644
--- a/spec/output/grimoire_empty_diff_stdout.txt
+++ b/spec/output/grimoire_empty_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: new node !
     ["+", "besteffort", "YES"]
@@ -17,6 +15,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -53,6 +52,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -89,6 +89,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -125,6 +126,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -161,6 +163,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -197,6 +200,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -233,6 +237,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -269,6 +274,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
     ["+", "ib_rate", 56]
@@ -309,6 +315,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -351,6 +358,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -393,6 +401,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -435,6 +444,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -477,6 +487,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -519,6 +530,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -561,6 +573,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -603,6 +616,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -645,6 +659,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -687,6 +702,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -729,6 +745,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -771,6 +788,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -813,6 +831,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -855,6 +874,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -897,6 +917,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -939,6 +960,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -981,6 +1003,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1023,6 +1046,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1065,6 +1089,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1107,6 +1132,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1149,6 +1175,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-5.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1191,6 +1218,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-5.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1233,6 +1261,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-5.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1275,6 +1304,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-5.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1317,6 +1347,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-5.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1359,6 +1390,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-6.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1401,6 +1433,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-6.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1443,6 +1476,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-6.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1485,6 +1519,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-6.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1527,6 +1562,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-6.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1569,6 +1605,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-7.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1611,6 +1648,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-7.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1653,6 +1691,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-7.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1695,6 +1734,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-7.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1737,6 +1777,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-7.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1779,6 +1820,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-8.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1821,6 +1863,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-8.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1863,6 +1906,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-8.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1905,6 +1949,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-8.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1947,6 +1992,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-8.fakesite.grid5000.fr"]
     ["+", "ib", "FDR"]
     ["+", "ib_count", 1]
@@ -1969,4 +2015,4 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "switch", "gw"]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "YES"]
-Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/grimoire_empty_print_stdout.txt b/spec/output/grimoire_empty_print_stdout.txt
index f2516e0294896563885a84dd63acf7ff09770821..3021de2356914d0bfaa58e77fbea8c987f1f9c0a 100644
--- a/spec/output/grimoire_empty_print_stdout.txt
+++ b/spec/output/grimoire_empty_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -106,7 +107,7 @@ oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=15 -p cpuset=13
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=16 -p cpuset=15
 echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -114,7 +115,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdb.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdb.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-1'
 
 echo; echo 'Setting properties for disk sdb.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -122,7 +123,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdc.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdc.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-1'
 
 echo; echo 'Setting properties for disk sdc.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -130,7 +131,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdd.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdd.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-1'
 
 echo; echo 'Setting properties for disk sdd.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -138,7 +139,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sde.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sde.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-1'
 
 echo; echo 'Setting properties for disk sde.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -146,7 +147,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdf.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdf.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-1'
 
 echo; echo 'Setting properties for disk sdf.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-1'" -p ip='172.16.71.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z13J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -171,7 +172,7 @@ oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=13
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=32 -p cpuset=15
 echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -179,7 +180,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdb.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdb.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-2'
 
 echo; echo 'Setting properties for disk sdb.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -187,7 +188,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdc.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdc.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-2'
 
 echo; echo 'Setting properties for disk sdc.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -195,7 +196,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdd.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdd.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-2'
 
 echo; echo 'Setting properties for disk sdd.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -203,7 +204,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sde.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sde.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-2'
 
 echo; echo 'Setting properties for disk sde.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -211,7 +212,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdf.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdf.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-2'
 
 echo; echo 'Setting properties for disk sdf.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-2'" -p ip='172.16.71.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3Z0ZH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -236,7 +237,7 @@ oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=13
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15
 echo; echo 'Setting properties for clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -244,7 +245,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdb.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdb.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-3'
 
 echo; echo 'Setting properties for disk sdb.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -252,7 +253,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdc.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdc.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-3'
 
 echo; echo 'Setting properties for disk sdc.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -260,7 +261,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdd.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdd.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-3'
 
 echo; echo 'Setting properties for disk sdd.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -268,7 +269,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sde.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sde.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-3'
 
 echo; echo 'Setting properties for disk sde.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -276,7 +277,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdf.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdf.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-3'
 
 echo; echo 'Setting properties for disk sdf.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-3'" -p ip='172.16.71.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3YZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -301,7 +302,7 @@ oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=13
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15
 echo; echo 'Setting properties for clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -309,7 +310,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdb.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdb.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-4'
 
 echo; echo 'Setting properties for disk sdb.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -317,7 +318,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdc.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdc.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-4'
 
 echo; echo 'Setting properties for disk sdc.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -325,7 +326,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdd.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdd.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-4'
 
 echo; echo 'Setting properties for disk sdd.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -333,7 +334,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sde.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sde.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-4'
 
 echo; echo 'Setting properties for disk sde.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -341,7 +342,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdf.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdf.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-4'
 
 echo; echo 'Setting properties for disk sdf.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-4'" -p ip='172.16.71.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36ZYH82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -366,7 +367,7 @@ oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=79 -p cpuset=13
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=80 -p cpuset=15
 echo; echo 'Setting properties for clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-5 on host clustera-5.fakesite.grid5000.fr:'
@@ -374,7 +375,7 @@ disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdb.clustera-5' && echo '=> disk a
 disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdb.clustera-5' || oarnodesetting -a -h '' -p host='clustera-5.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-5'
 
 echo; echo 'Setting properties for disk sdb.clustera-5 on host clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-5 on host clustera-5.fakesite.grid5000.fr:'
@@ -382,7 +383,7 @@ disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdc.clustera-5' && echo '=> disk a
 disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdc.clustera-5' || oarnodesetting -a -h '' -p host='clustera-5.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-5'
 
 echo; echo 'Setting properties for disk sdc.clustera-5 on host clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-5 on host clustera-5.fakesite.grid5000.fr:'
@@ -390,7 +391,7 @@ disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdd.clustera-5' && echo '=> disk a
 disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdd.clustera-5' || oarnodesetting -a -h '' -p host='clustera-5.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-5'
 
 echo; echo 'Setting properties for disk sdd.clustera-5 on host clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-5 on host clustera-5.fakesite.grid5000.fr:'
@@ -398,7 +399,7 @@ disk_exist 'clustera-5.fakesite.grid5000.fr' 'sde.clustera-5' && echo '=> disk a
 disk_exist 'clustera-5.fakesite.grid5000.fr' 'sde.clustera-5' || oarnodesetting -a -h '' -p host='clustera-5.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-5'
 
 echo; echo 'Setting properties for disk sde.clustera-5 on host clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-5 on host clustera-5.fakesite.grid5000.fr:'
@@ -406,7 +407,7 @@ disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdf.clustera-5' && echo '=> disk a
 disk_exist 'clustera-5.fakesite.grid5000.fr' 'sdf.clustera-5' || oarnodesetting -a -h '' -p host='clustera-5.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-5'
 
 echo; echo 'Setting properties for disk sdf.clustera-5 on host clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-5'" -p ip='172.16.71.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36X1J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-5.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-5' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -431,7 +432,7 @@ oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='clustera-6.fakesite.grid5000.fr' -p cpu=12 -p core=95 -p cpuset=13
 oarnodesetting -a -h 'clustera-6.fakesite.grid5000.fr' -s Absent -p host='clustera-6.fakesite.grid5000.fr' -p cpu=12 -p core=96 -p cpuset=15
 echo; echo 'Setting properties for clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-6 on host clustera-6.fakesite.grid5000.fr:'
@@ -439,7 +440,7 @@ disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdb.clustera-6' && echo '=> disk a
 disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdb.clustera-6' || oarnodesetting -a -h '' -p host='clustera-6.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-6'
 
 echo; echo 'Setting properties for disk sdb.clustera-6 on host clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-6 on host clustera-6.fakesite.grid5000.fr:'
@@ -447,7 +448,7 @@ disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdc.clustera-6' && echo '=> disk a
 disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdc.clustera-6' || oarnodesetting -a -h '' -p host='clustera-6.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-6'
 
 echo; echo 'Setting properties for disk sdc.clustera-6 on host clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-6 on host clustera-6.fakesite.grid5000.fr:'
@@ -455,7 +456,7 @@ disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdd.clustera-6' && echo '=> disk a
 disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdd.clustera-6' || oarnodesetting -a -h '' -p host='clustera-6.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-6'
 
 echo; echo 'Setting properties for disk sdd.clustera-6 on host clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-6 on host clustera-6.fakesite.grid5000.fr:'
@@ -463,7 +464,7 @@ disk_exist 'clustera-6.fakesite.grid5000.fr' 'sde.clustera-6' && echo '=> disk a
 disk_exist 'clustera-6.fakesite.grid5000.fr' 'sde.clustera-6' || oarnodesetting -a -h '' -p host='clustera-6.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-6'
 
 echo; echo 'Setting properties for disk sde.clustera-6 on host clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-6 on host clustera-6.fakesite.grid5000.fr:'
@@ -471,7 +472,7 @@ disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdf.clustera-6' && echo '=> disk a
 disk_exist 'clustera-6.fakesite.grid5000.fr' 'sdf.clustera-6' || oarnodesetting -a -h '' -p host='clustera-6.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-6'
 
 echo; echo 'Setting properties for disk sdf.clustera-6 on host clustera-6.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-6.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-6'" -p ip='172.16.71.6' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3722J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-6.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-6' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -496,7 +497,7 @@ oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='clustera-7.fakesite.grid5000.fr' -p cpu=14 -p core=111 -p cpuset=13
 oarnodesetting -a -h 'clustera-7.fakesite.grid5000.fr' -s Absent -p host='clustera-7.fakesite.grid5000.fr' -p cpu=14 -p core=112 -p cpuset=15
 echo; echo 'Setting properties for clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-7 on host clustera-7.fakesite.grid5000.fr:'
@@ -504,7 +505,7 @@ disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdb.clustera-7' && echo '=> disk a
 disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdb.clustera-7' || oarnodesetting -a -h '' -p host='clustera-7.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-7'
 
 echo; echo 'Setting properties for disk sdb.clustera-7 on host clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-7 on host clustera-7.fakesite.grid5000.fr:'
@@ -512,7 +513,7 @@ disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdc.clustera-7' && echo '=> disk a
 disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdc.clustera-7' || oarnodesetting -a -h '' -p host='clustera-7.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-7'
 
 echo; echo 'Setting properties for disk sdc.clustera-7 on host clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-7 on host clustera-7.fakesite.grid5000.fr:'
@@ -520,7 +521,7 @@ disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdd.clustera-7' && echo '=> disk a
 disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdd.clustera-7' || oarnodesetting -a -h '' -p host='clustera-7.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-7'
 
 echo; echo 'Setting properties for disk sdd.clustera-7 on host clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-7 on host clustera-7.fakesite.grid5000.fr:'
@@ -528,7 +529,7 @@ disk_exist 'clustera-7.fakesite.grid5000.fr' 'sde.clustera-7' && echo '=> disk a
 disk_exist 'clustera-7.fakesite.grid5000.fr' 'sde.clustera-7' || oarnodesetting -a -h '' -p host='clustera-7.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-7'
 
 echo; echo 'Setting properties for disk sde.clustera-7 on host clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-7 on host clustera-7.fakesite.grid5000.fr:'
@@ -536,7 +537,7 @@ disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdf.clustera-7' && echo '=> disk a
 disk_exist 'clustera-7.fakesite.grid5000.fr' 'sdf.clustera-7' || oarnodesetting -a -h '' -p host='clustera-7.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-7'
 
 echo; echo 'Setting properties for disk sdf.clustera-7 on host clustera-7.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-7.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-7'" -p ip='172.16.71.7' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 36Y3J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-7.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-7' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -561,7 +562,7 @@ oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='clustera-8.fakesite.grid5000.fr' -p cpu=16 -p core=127 -p cpuset=13
 oarnodesetting -a -h 'clustera-8.fakesite.grid5000.fr' -s Absent -p host='clustera-8.fakesite.grid5000.fr' -p cpu=16 -p core=128 -p cpuset=15
 echo; echo 'Setting properties for clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='default'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-8 on host clustera-8.fakesite.grid5000.fr:'
@@ -569,7 +570,7 @@ disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdb.clustera-8' && echo '=> disk a
 disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdb.clustera-8' || oarnodesetting -a -h '' -p host='clustera-8.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-8'
 
 echo; echo 'Setting properties for disk sdb.clustera-8 on host clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-8 on host clustera-8.fakesite.grid5000.fr:'
@@ -577,7 +578,7 @@ disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdc.clustera-8' && echo '=> disk a
 disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdc.clustera-8' || oarnodesetting -a -h '' -p host='clustera-8.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-8'
 
 echo; echo 'Setting properties for disk sdc.clustera-8 on host clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-8 on host clustera-8.fakesite.grid5000.fr:'
@@ -585,7 +586,7 @@ disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdd.clustera-8' && echo '=> disk a
 disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdd.clustera-8' || oarnodesetting -a -h '' -p host='clustera-8.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-8'
 
 echo; echo 'Setting properties for disk sdd.clustera-8 on host clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sde.clustera-8 on host clustera-8.fakesite.grid5000.fr:'
@@ -593,7 +594,7 @@ disk_exist 'clustera-8.fakesite.grid5000.fr' 'sde.clustera-8' && echo '=> disk a
 disk_exist 'clustera-8.fakesite.grid5000.fr' 'sde.clustera-8' || oarnodesetting -a -h '' -p host='clustera-8.fakesite.grid5000.fr' -p type='disk' -p disk='sde.clustera-8'
 
 echo; echo 'Setting properties for disk sde.clustera-8 on host clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sde.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sde.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:4:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdf.clustera-8 on host clustera-8.fakesite.grid5000.fr:'
@@ -601,6 +602,6 @@ disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdf.clustera-8' && echo '=> disk a
 disk_exist 'clustera-8.fakesite.grid5000.fr' 'sdf.clustera-8' || oarnodesetting -a -h '' -p host='clustera-8.fakesite.grid5000.fr' -p type='disk' -p disk='sdf.clustera-8'
 
 echo; echo 'Setting properties for disk sdf.clustera-8 on host clustera-8.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-8.fakesite.grid5000.fr' and type='disk' and disk='sdf.clustera-8'" -p ip='172.16.71.8' -p cluster='clustera' -p nodemodel='Dell PowerEdge R630' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon E5-2630 v3' -p cpufreq='2.4' -p disktype='SCSI/HDD' -p chassis='Dell Inc. PowerEdge R630 3703J82' -p eth_count=4 -p eth_rate=10 -p ib_count=1 -p ib_rate=56 -p ib='FDR' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201601 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=5 -p host='clustera-8.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdf.clustera-8' -p diskpath='/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:5:0' -p cpuset=-1
 
 echo '================================================================================'
diff --git a/spec/output/grue_empty_diff_stdout.txt b/spec/output/grue_empty_diff_stdout.txt
index 3da684ad1d065559c58cd0e20d07b659e0e1bb19..c06261b617c0ae81f3bb6d70f4516d39aeecc67e 100644
--- a/spec/output/grue_empty_diff_stdout.txt
+++ b/spec/output/grue_empty_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: new node !
     ["+", "besteffort", "YES"]
@@ -17,6 +15,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla T4"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -53,6 +52,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla T4"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -89,6 +89,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla T4"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -125,6 +126,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla T4"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -161,6 +163,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 4]
+    ["+", "gpu_model", "Tesla T4"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -181,4 +184,4 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "switch", "gw"]
     ["+", "virtual", "amd-v"]
     ["+", "wattmeter", "NO"]
-Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/grue_empty_print_stdout.txt b/spec/output/grue_empty_print_stdout.txt
index 9f78ee908793246e94e95aa89b3938985400f0e0..522b6d4c42957e6b2dcf3c9491e1ed04a1ddd400 100644
--- a/spec/output/grue_empty_print_stdout.txt
+++ b/spec/output/grue_empty_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -120,7 +121,7 @@ oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=31 -p cpuset=29 -p gpu=4 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=2 -p core=32 -p cpuset=31 -p gpu=3 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 FVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 FVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -161,7 +162,7 @@ oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=63 -p cpuset=29 -p gpu=8 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=4 -p core=64 -p cpuset=31 -p gpu=7 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 DVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 DVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -202,7 +203,7 @@ oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=95 -p cpuset=29 -p gpu=12 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=6 -p core=96 -p cpuset=31 -p gpu=11 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 CVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 CVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -243,7 +244,7 @@ oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=127 -p cpuset=29 -p gpu=16 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=8 -p core=128 -p cpuset=31 -p gpu=15 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 GVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 GVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -284,6 +285,6 @@ oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=159 -p cpuset=29 -p gpu=20 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting -a -h 'clustera-5.fakesite.grid5000.fr' -s Absent -p host='clustera-5.fakesite.grid5000.fr' -p cpu=10 -p core=160 -p cpuset=31 -p gpu=19 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-5.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 BVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.fakesite.grid5000.fr' and type='default'" -p ip='172.16.77.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 BVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/grue_nogpus_diff_stdout.txt b/spec/output/grue_nogpus_diff_stdout.txt
index 4bbf9bac6039376b2b0bd56a8b46fe7e23a401fc..38917ad89bd93f9e8a134cb0e708b391bea5de27 100644
--- a/spec/output/grue_nogpus_diff_stdout.txt
+++ b/spec/output/grue_nogpus_diff_stdout.txt
@@ -1,9 +1,8 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1:
     ["~", "disktype", "SAS", "SAS/SSD"]
     ["~", "gpu_count", nil, 4]
+    ["~", "gpu_model", nil, "Tesla T4"]
   clustera-2: same modifications as above
   clustera-3: same modifications as above
   clustera-4: same modifications as above
diff --git a/spec/output/grue_nogpus_print_stdout.txt b/spec/output/grue_nogpus_print_stdout.txt
index 5e4cf7cca4f0368a661562a9a32841e6077e50d8..bac2b54d03685bf49c2029c25fe25d6d108d0cb1 100644
--- a/spec/output/grue_nogpus_print_stdout.txt
+++ b/spec/output/grue_nogpus_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -120,7 +121,7 @@ oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='12244
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='12245' AND type='default'" -p cpu=1766 -p core=10997 -p cpuset=29 -p gpu=108 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' AND resource_id='12246' AND type='default'" -p cpu=1766 -p core=10998 -p cpuset=31 -p gpu=107 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-1.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 FVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-1.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 FVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -161,7 +162,7 @@ oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='12276
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='12277' AND type='default'" -p cpu=1768 -p core=11029 -p cpuset=29 -p gpu=112 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' AND resource_id='12278' AND type='default'" -p cpu=1768 -p core=11030 -p cpuset=31 -p gpu=111 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-2.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 DVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-2.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 DVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -202,7 +203,7 @@ oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='12308
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='12309' AND type='default'" -p cpu=1770 -p core=11061 -p cpuset=29 -p gpu=116 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' AND resource_id='12310' AND type='default'" -p cpu=1770 -p core=11062 -p cpuset=31 -p gpu=115 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-3.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 CVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-3.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 CVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -243,7 +244,7 @@ oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='12340
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='12341' AND type='default'" -p cpu=1772 -p core=11093 -p cpuset=29 -p gpu=120 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' AND resource_id='12342' AND type='default'" -p cpu=1772 -p core=11094 -p cpuset=31 -p gpu=119 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-4.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 GVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-4.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 GVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=172800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
 
@@ -284,6 +285,6 @@ oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='12372
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='12373' AND type='default'" -p cpu=1774 -p core=11125 -p cpuset=29 -p gpu=124 -p gpu_model='Tesla T4' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
 oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' AND resource_id='12374' AND type='default'" -p cpu=1774 -p core=11126 -p cpuset=31 -p gpu=123 -p gpu_model='Tesla T4' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
 echo; echo 'Setting properties for clustera-5.nancy.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 BVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+oarnodesetting --sql "host='clustera-5.nancy.grid5000.fr' and type='default'" -p ip='172.16.77.5' -p cluster='clustera' -p nodemodel='Dell PowerEdge R7425' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='amd-v' -p cpuarch='x86_64' -p cpucore=16 -p cputype='AMD EPYC 7351' -p cpufreq='2.4' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R7425 BVJVY03' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=4096 -p memcpu=65536 -p memnode=131072 -p gpu_model='Tesla T4' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201911 -p max_walltime=604800 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
 
 echo '================================================================================'
diff --git a/spec/output/missing_property_diff_stderr.txt b/spec/output/missing_property_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/missing_property_diff_stdout.txt b/spec/output/missing_property_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5c6e50b9d867fc7761b7ac7756c080bcf6197d7e
--- /dev/null
+++ b/spec/output/missing_property_diff_stdout.txt
@@ -0,0 +1,6 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["+", "ib_rate", 0]
+  clustera-2: same modifications as above
+Properties that need to be created on the fakesite server: ib_rate
diff --git a/spec/output/missing_property_print_stderr.txt b/spec/output/missing_property_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/missing_property_print_stdout.txt b/spec/output/missing_property_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a841e23f8a57ee52246f1ec10be6955ac4bb2561
--- /dev/null
+++ b/spec/output/missing_property_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/missing_property_table_stderr.txt b/spec/output/missing_property_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/missing_property_table_stdout.txt b/spec/output/missing_property_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/missing_property_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/non_reservable_gpus_diff_stderr.txt b/spec/output/non_reservable_gpus_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/non_reservable_gpus_diff_stdout.txt b/spec/output/non_reservable_gpus_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8b4deea27ec63bfae0633251db4fdd42a60a8e85
--- /dev/null
+++ b/spec/output/non_reservable_gpus_diff_stdout.txt
@@ -0,0 +1,68 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+  clustera-2: same modifications as above
+# Error: Resource 1 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=1 cpuset=0 gpu=1 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 1, generator wants null.
+# Error: Resource 1 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=1 cpuset=0 gpu=1 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 2 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=2 cpuset=1 gpu=1 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 1, generator wants null.
+# Error: Resource 2 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=2 cpuset=1 gpu=1 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 3 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=3 cpuset=2 gpu=1 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 1, generator wants null.
+# Error: Resource 3 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=3 cpuset=2 gpu=1 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=3 gpu=1 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 1, generator wants null.
+# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=3 gpu=1 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 5 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=5 cpuset=4 gpu=2 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 2, generator wants null.
+# Error: Resource 5 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=5 cpuset=4 gpu=2 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 6 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=6 cpuset=5 gpu=2 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 2, generator wants null.
+# Error: Resource 6 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=6 cpuset=5 gpu=2 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 7 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=7 cpuset=6 gpu=2 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 2, generator wants null.
+# Error: Resource 7 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=7 cpuset=6 gpu=2 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 8 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=8 cpuset=7 gpu=2 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 2, generator wants null.
+# Error: Resource 8 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=8 cpuset=7 gpu=2 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 9 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=9 cpuset=8 gpu=3 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 3, generator wants null.
+# Error: Resource 9 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=9 cpuset=8 gpu=3 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 10 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=10 cpuset=9 gpu=3 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 3, generator wants null.
+# Error: Resource 10 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=10 cpuset=9 gpu=3 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 11 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=11 cpuset=10 gpu=3 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 3, generator wants null.
+# Error: Resource 11 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=11 cpuset=10 gpu=3 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 12 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=12 cpuset=11 gpu=3 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 3, generator wants null.
+# Error: Resource 12 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=12 cpuset=11 gpu=3 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 13 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=13 cpuset=12 gpu=4 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 4, generator wants null.
+# Error: Resource 13 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=13 cpuset=12 gpu=4 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 14 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=14 cpuset=13 gpu=4 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 4, generator wants null.
+# Error: Resource 14 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=14 cpuset=13 gpu=4 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 15 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=15 cpuset=14 gpu=4 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 4, generator wants null.
+# Error: Resource 15 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=15 cpuset=14 gpu=4 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 16 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=16 cpuset=15 gpu=4 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 4, generator wants null.
+# Error: Resource 16 (host=clustera-1.fakesite.grid5000.fr cpu=2 core=16 cpuset=15 gpu=4 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 17 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=17 cpuset=0 gpu=5 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 5, generator wants null.
+# Error: Resource 17 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=17 cpuset=0 gpu=5 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 18 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=18 cpuset=1 gpu=5 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 5, generator wants null.
+# Error: Resource 18 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=18 cpuset=1 gpu=5 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 19 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=19 cpuset=2 gpu=5 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 5, generator wants null.
+# Error: Resource 19 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=19 cpuset=2 gpu=5 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 20 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=20 cpuset=3 gpu=5 gpudevice=0) has a mismatch for ressource GPU: OAR API gives 5, generator wants null.
+# Error: Resource 20 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=20 cpuset=3 gpu=5 gpudevice=0) has a mismatch for ressource GPUDEVICE: OAR API gives 0, generator wants null.
+# Error: Resource 21 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=21 cpuset=4 gpu=6 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 6, generator wants null.
+# Error: Resource 21 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=21 cpuset=4 gpu=6 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 22 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=22 cpuset=5 gpu=6 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 6, generator wants null.
+# Error: Resource 22 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=22 cpuset=5 gpu=6 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 23 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=23 cpuset=6 gpu=6 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 6, generator wants null.
+# Error: Resource 23 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=23 cpuset=6 gpu=6 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 24 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=24 cpuset=7 gpu=6 gpudevice=1) has a mismatch for ressource GPU: OAR API gives 6, generator wants null.
+# Error: Resource 24 (host=clustera-2.fakesite.grid5000.fr cpu=3 core=24 cpuset=7 gpu=6 gpudevice=1) has a mismatch for ressource GPUDEVICE: OAR API gives 1, generator wants null.
+# Error: Resource 25 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=25 cpuset=8 gpu=7 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 7, generator wants null.
+# Error: Resource 25 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=25 cpuset=8 gpu=7 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 26 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=26 cpuset=9 gpu=7 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 7, generator wants null.
+# Error: Resource 26 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=26 cpuset=9 gpu=7 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 27 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=27 cpuset=10 gpu=7 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 7, generator wants null.
+# Error: Resource 27 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=27 cpuset=10 gpu=7 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 28 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=28 cpuset=11 gpu=7 gpudevice=2) has a mismatch for ressource GPU: OAR API gives 7, generator wants null.
+# Error: Resource 28 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=28 cpuset=11 gpu=7 gpudevice=2) has a mismatch for ressource GPUDEVICE: OAR API gives 2, generator wants null.
+# Error: Resource 29 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=29 cpuset=12 gpu=8 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 8, generator wants null.
+# Error: Resource 29 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=29 cpuset=12 gpu=8 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 30 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=30 cpuset=13 gpu=8 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 8, generator wants null.
+# Error: Resource 30 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=30 cpuset=13 gpu=8 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 31 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=31 cpuset=14 gpu=8 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 8, generator wants null.
+# Error: Resource 31 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=31 cpuset=14 gpu=8 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
+# Error: Resource 32 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=32 cpuset=15 gpu=8 gpudevice=3) has a mismatch for ressource GPU: OAR API gives 8, generator wants null.
+# Error: Resource 32 (host=clustera-2.fakesite.grid5000.fr cpu=4 core=32 cpuset=15 gpu=8 gpudevice=3) has a mismatch for ressource GPUDEVICE: OAR API gives 3, generator wants null.
diff --git a/spec/output/non_reservable_gpus_print_stderr.txt b/spec/output/non_reservable_gpus_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/non_reservable_gpus_print_stdout.txt b/spec/output/non_reservable_gpus_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f4c835540e03860982a9f589266f87120127756c
--- /dev/null
+++ b/spec/output/non_reservable_gpus_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/non_reservable_gpus_table_stderr.txt b/spec/output/non_reservable_gpus_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/non_reservable_gpus_table_stdout.txt b/spec/output/non_reservable_gpus_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6290d46bb59c1cd946f8205030e3a99cb986d0f9
--- /dev/null
+++ b/spec/output/non_reservable_gpus_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 2     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 3     | 2        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 4     | 3        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 5     | 4        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 6     | 5        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 7     | 6        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 1     | 8     | 7        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 9     | 8        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 10    | 9        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 11    | 10       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 12    | 11       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 13    | 12       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 14    | 13       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 15    | 14       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-1           | 2     | 16    | 15       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 17    | 0        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 18    | 1        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 19    | 2        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 20    | 3        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 21    | 4        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 22    | 5        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 23    | 6        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 3     | 24    | 7        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 25    | 8        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 26    | 9        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 27    | 10       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 28    | 11       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 29    | 12       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 30    | 13       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 31    | 14       |      |                      | Intel Xeon Silver 4110         |                               |
+|  clustera | clustera-2           | 4     | 32    | 15       |      |                      | Intel Xeon Silver 4110         |                               |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/wattmeters_nil_diff_stderr.txt b/spec/output/wattmeters_nil_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/wattmeters_nil_diff_stdout.txt b/spec/output/wattmeters_nil_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b94304b29d4389a8050d408393be32e5a938fc06
--- /dev/null
+++ b/spec/output/wattmeters_nil_diff_stdout.txt
@@ -0,0 +1,5 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["~", "wattmeter", "MULTIPLE", "NO"]
+  clustera-2: same modifications as above
diff --git a/spec/output/wattmeters_nil_print_stderr.txt b/spec/output/wattmeters_nil_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/wattmeters_nil_print_stdout.txt b/spec/output/wattmeters_nil_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d237c3bd9f16e1a84f5c048655341ba8f8a2b57c
--- /dev/null
+++ b/spec/output/wattmeters_nil_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='NO' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/wattmeters_nil_table_stderr.txt b/spec/output/wattmeters_nil_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/wattmeters_nil_table_stdout.txt b/spec/output/wattmeters_nil_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/wattmeters_nil_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/with-data_diff_stderr.txt b/spec/output/with-data_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with-data_diff_stdout.txt b/spec/output/with-data_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dfb850e864bfd7203894a0815092b397e57dc145
--- /dev/null
+++ b/spec/output/with-data_diff_stdout.txt
@@ -0,0 +1,4 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+  clustera-2: same modifications as above
diff --git a/spec/output/with-data_print_stderr.txt b/spec/output/with-data_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with-data_print_stdout.txt b/spec/output/with-data_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a841e23f8a57ee52246f1ec10be6955ac4bb2561
--- /dev/null
+++ b/spec/output/with-data_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/with-data_table_stderr.txt b/spec/output/with-data_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with-data_table_stdout.txt b/spec/output/with-data_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/with-data_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/with_disk_misconfigured_resources_properties_and_disks_diff_stderr.txt b/spec/output/with_disk_misconfigured_resources_properties_and_disks_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_disk_misconfigured_resources_properties_and_disks_diff_stdout.txt b/spec/output/with_disk_misconfigured_resources_properties_and_disks_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ef36b7471722e0ccad364620ddaa58c587542f89
--- /dev/null
+++ b/spec/output/with_disk_misconfigured_resources_properties_and_disks_diff_stdout.txt
@@ -0,0 +1,76 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.1"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+  clustera-2: new node !
+    ["+", "besteffort", "YES"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "deploy", "YES"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA/SSD"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "exotic", "NO"]
+    ["+", "gpu_count", 4]
+    ["+", "gpu_model", "RTX 2080 Ti"]
+    ["+", "ib", "NO"]
+    ["+", "ib_count", 0]
+    ["+", "ib_rate", 0]
+    ["+", "ip", "172.16.64.2"]
+    ["+", "maintenance", "NO"]
+    ["+", "max_walltime", 86400]
+    ["+", "memcore", 8192]
+    ["+", "memcpu", 65536]
+    ["+", "memnode", 131072]
+    ["+", "mic", "NO"]
+    ["+", "myri", "NO"]
+    ["+", "myri_count", 0]
+    ["+", "myri_rate", 0]
+    ["+", "nodemodel", "Dell PowerEdge T640"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+Properties that need to be created on the fakesite server: switch, chassis
diff --git a/spec/output/with_disk_misconfigured_resources_properties_and_disks_print_stderr.txt b/spec/output/with_disk_misconfigured_resources_properties_and_disks_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_disk_misconfigured_resources_properties_and_disks_print_stdout.txt b/spec/output/with_disk_misconfigured_resources_properties_and_disks_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dece82f8315cb9f234791ce6b9168c345dd13a49
--- /dev/null
+++ b/spec/output/with_disk_misconfigured_resources_properties_and_disks_print_stdout.txt
@@ -0,0 +1,137 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+property_exist 'disk' || oarproperty -a disk --varchar
+property_exist 'diskpath' || oarproperty -a diskpath --varchar
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=33 -p cpuset=0 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=34 -p cpuset=1 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=35 -p cpuset=2 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=36 -p cpuset=3 -p gpu=9 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=37 -p cpuset=4 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=38 -p cpuset=5 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=39 -p cpuset=6 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=5 -p core=40 -p cpuset=7 -p gpu=10 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=41 -p cpuset=8 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=42 -p cpuset=9 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=43 -p cpuset=10 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=44 -p cpuset=11 -p gpu=11 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=45 -p cpuset=12 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=46 -p cpuset=13 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=47 -p cpuset=14 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=6 -p core=48 -p cpuset=15 -p gpu=12 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=49 -p cpuset=0 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=50 -p cpuset=1 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=51 -p cpuset=2 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=52 -p cpuset=3 -p gpu=13 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=53 -p cpuset=4 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=54 -p cpuset=5 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=55 -p cpuset=6 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=7 -p core=56 -p cpuset=7 -p gpu=14 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=57 -p cpuset=8 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=58 -p cpuset=9 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=59 -p cpuset=10 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=60 -p cpuset=11 -p gpu=15 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=61 -p cpuset=12 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=62 -p cpuset=13 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=63 -p cpuset=14 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=64 -p cpuset=15 -p gpu=16 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/with_disk_misconfigured_resources_properties_and_disks_table_stderr.txt b/spec/output/with_disk_misconfigured_resources_properties_and_disks_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_disk_misconfigured_resources_properties_and_disks_table_stdout.txt b/spec/output/with_disk_misconfigured_resources_properties_and_disks_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..61ea618d71d84d14ff12cc4b0fa827f8828dfdd3
--- /dev/null
+++ b/spec/output/with_disk_misconfigured_resources_properties_and_disks_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 5     | 33    | 0        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 34    | 1        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 35    | 2        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 36    | 3        | 9    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 37    | 4        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 38    | 5        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 39    | 6        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 5     | 40    | 7        | 10   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 41    | 8        | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 42    | 9        | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 43    | 10       | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 44    | 11       | 11   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 45    | 12       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 46    | 13       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 47    | 14       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 6     | 48    | 15       | 12   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 49    | 0        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 50    | 1        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 51    | 2        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 52    | 3        | 13   | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 53    | 4        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 54    | 5        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 55    | 6        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 7     | 56    | 7        | 14   | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 57    | 8        | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 58    | 9        | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 59    | 10       | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 60    | 11       | 15   | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 61    | 12       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 62    | 13       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 63    | 14       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 8     | 64    | 15       | 16   | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/with_too_few_oar_resources_diff_stderr.txt b/spec/output/with_too_few_oar_resources_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_too_few_oar_resources_diff_stdout.txt b/spec/output/with_too_few_oar_resources_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6001108a83e2423ee9922665bf84229a11036d33
--- /dev/null
+++ b/spec/output/with_too_few_oar_resources_diff_stdout.txt
@@ -0,0 +1,2 @@
+CORE has an unexpected number of resources (current:31 vs expected:32).
+unexpected number (current:31 vs expected:32) of resources for cluster clustera
diff --git a/spec/output/with_too_few_oar_resources_print_stderr.txt b/spec/output/with_too_few_oar_resources_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_too_few_oar_resources_print_stdout.txt b/spec/output/with_too_few_oar_resources_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6001108a83e2423ee9922665bf84229a11036d33
--- /dev/null
+++ b/spec/output/with_too_few_oar_resources_print_stdout.txt
@@ -0,0 +1,2 @@
+CORE has an unexpected number of resources (current:31 vs expected:32).
+unexpected number (current:31 vs expected:32) of resources for cluster clustera
diff --git a/spec/output/with_too_few_oar_resources_table_stderr.txt b/spec/output/with_too_few_oar_resources_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_too_few_oar_resources_table_stdout.txt b/spec/output/with_too_few_oar_resources_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6001108a83e2423ee9922665bf84229a11036d33
--- /dev/null
+++ b/spec/output/with_too_few_oar_resources_table_stdout.txt
@@ -0,0 +1,2 @@
+CORE has an unexpected number of resources (current:31 vs expected:32).
+unexpected number (current:31 vs expected:32) of resources for cluster clustera
diff --git a/spec/output/with_too_many_oar_resources_diff_stderr.txt b/spec/output/with_too_many_oar_resources_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_too_many_oar_resources_diff_stdout.txt b/spec/output/with_too_many_oar_resources_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5931edfcd26635ad569c2eaaa52256b7cf8ce8ea
--- /dev/null
+++ b/spec/output/with_too_many_oar_resources_diff_stdout.txt
@@ -0,0 +1,2 @@
+CORE has an unexpected number of resources (current:33 vs expected:32).
+unexpected number (current:33 vs expected:32) of resources for cluster clustera
diff --git a/spec/output/with_too_many_oar_resources_print_stderr.txt b/spec/output/with_too_many_oar_resources_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_too_many_oar_resources_print_stdout.txt b/spec/output/with_too_many_oar_resources_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5931edfcd26635ad569c2eaaa52256b7cf8ce8ea
--- /dev/null
+++ b/spec/output/with_too_many_oar_resources_print_stdout.txt
@@ -0,0 +1,2 @@
+CORE has an unexpected number of resources (current:33 vs expected:32).
+unexpected number (current:33 vs expected:32) of resources for cluster clustera
diff --git a/spec/output/with_too_many_oar_resources_table_stderr.txt b/spec/output/with_too_many_oar_resources_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/with_too_many_oar_resources_table_stdout.txt b/spec/output/with_too_many_oar_resources_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5931edfcd26635ad569c2eaaa52256b7cf8ce8ea
--- /dev/null
+++ b/spec/output/with_too_many_oar_resources_table_stdout.txt
@@ -0,0 +1,2 @@
+CORE has an unexpected number of resources (current:33 vs expected:32).
+unexpected number (current:33 vs expected:32) of resources for cluster clustera
diff --git a/spec/output/wrong_variable_type_diff_stderr.txt b/spec/output/wrong_variable_type_diff_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/wrong_variable_type_diff_stdout.txt b/spec/output/wrong_variable_type_diff_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..df4c0e52c8da3022be09f73e792ffd3f1210e5f7
--- /dev/null
+++ b/spec/output/wrong_variable_type_diff_stdout.txt
@@ -0,0 +1,13 @@
+Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
+  clustera-1:
+    ["~", "eth_rate", "10", 10]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 FL1CBX2"]
+    ["+", "exotic", "NO"]
+  clustera-2:
+    ["~", "eth_rate", "10", 10]
+    ["~", "gpu_model", "GeForce RTX 2080 Ti", "RTX 2080 Ti"]
+    ["+", "chassis", "Dell Inc. PowerEdge T640 9L1CBX2"]
+    ["+", "exotic", "NO"]
+Error: the OAR property 'eth_rate' is a 'String' on the fakesite server and this script uses 'Integer' for this property.
+Properties that need to be created on the fakesite server: chassis, exotic
diff --git a/spec/output/wrong_variable_type_print_stderr.txt b/spec/output/wrong_variable_type_print_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/wrong_variable_type_print_stdout.txt b/spec/output/wrong_variable_type_print_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a841e23f8a57ee52246f1ec10be6955ac4bb2561
--- /dev/null
+++ b/spec/output/wrong_variable_type_print_stdout.txt
@@ -0,0 +1,135 @@
+
+#! /usr/bin/env bash
+
+set -eu
+set -x
+set -o pipefail
+
+echo '================================================================================'
+
+property_exist () {
+  [[ $(oarproperty -l | grep -e "^$1$") ]]
+}
+
+node_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='default'") ]]
+}
+
+disk_exist () {
+  [[ $(oarnodes --sql "host='$1' and type='disk' and disk='$2'") ]]
+}
+
+
+# if [ $(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CPU_ID=0
+# else
+#   MAX_CPU_ID=$(oarnodes -Y | grep " cpu:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CPU_ID=MAX_CPU_ID+1"
+# fi
+#
+# if [ $(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | wc -c) == "0" ]; then
+#   NEXT_AVAILABLE_CORE_ID=0
+# else
+#   MAX_CORE_ID=$(oarnodes -Y | grep " core:" | awk '{print $2}' | sort -nr | head -n1)
+#   let "NEXT_AVAILABLE_CORE_ID=MAX_CORE_ID+1"
+# fi
+
+#############################################
+# Create OAR properties that were created by 'oar_resources_add'
+#############################################
+property_exist 'host' || oarproperty -a host --varchar
+property_exist 'cpu' || oarproperty -a cpu
+property_exist 'core' || oarproperty -a core
+property_exist 'gpudevice' || oarproperty -a gpudevice
+property_exist 'gpu' || oarproperty -a gpu
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+
+
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+property_exist 'ip' || oarproperty -a ip --varchar
+property_exist 'cluster' || oarproperty -a cluster --varchar
+property_exist 'nodemodel' || oarproperty -a nodemodel --varchar
+property_exist 'switch' || oarproperty -a switch --varchar
+property_exist 'virtual' || oarproperty -a virtual --varchar
+property_exist 'cpuarch' || oarproperty -a cpuarch --varchar
+property_exist 'cpucore' || oarproperty -a cpucore
+property_exist 'cputype' || oarproperty -a cputype --varchar
+property_exist 'cpufreq' || oarproperty -a cpufreq --varchar
+property_exist 'disktype' || oarproperty -a disktype --varchar
+property_exist 'chassis' || oarproperty -a chassis --varchar
+property_exist 'eth_count' || oarproperty -a eth_count
+property_exist 'eth_rate' || oarproperty -a eth_rate
+property_exist 'ib_count' || oarproperty -a ib_count
+property_exist 'ib_rate' || oarproperty -a ib_rate
+property_exist 'ib' || oarproperty -a ib --varchar
+property_exist 'opa_count' || oarproperty -a opa_count
+property_exist 'opa_rate' || oarproperty -a opa_rate
+property_exist 'myri_count' || oarproperty -a myri_count
+property_exist 'myri_rate' || oarproperty -a myri_rate
+property_exist 'myri' || oarproperty -a myri --varchar
+property_exist 'memcore' || oarproperty -a memcore
+property_exist 'memcpu' || oarproperty -a memcpu
+property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
+property_exist 'gpu_count' || oarproperty -a gpu_count
+property_exist 'exotic' || oarproperty -a exotic --varchar
+property_exist 'mic' || oarproperty -a mic --varchar
+property_exist 'wattmeter' || oarproperty -a wattmeter --varchar
+property_exist 'cluster_priority' || oarproperty -a cluster_priority
+property_exist 'max_walltime' || oarproperty -a max_walltime
+property_exist 'production' || oarproperty -a production --varchar
+property_exist 'maintenance' || oarproperty -a maintenance --varchar
+property_exist 'disk_reservation_count' || oarproperty -a disk_reservation_count
+
+
+###################################
+# clustera-1.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='4' AND type='default'" -p cpu=1 -p core=4 -p cpuset=3 -p gpu=1 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='5' AND type='default'" -p cpu=1 -p core=5 -p cpuset=4 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='6' AND type='default'" -p cpu=1 -p core=6 -p cpuset=5 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='7' AND type='default'" -p cpu=1 -p core=7 -p cpuset=6 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='8' AND type='default'" -p cpu=1 -p core=8 -p cpuset=7 -p gpu=2 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='9' AND type='default'" -p cpu=2 -p core=9 -p cpuset=8 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='10' AND type='default'" -p cpu=2 -p core=10 -p cpuset=9 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='11' AND type='default'" -p cpu=2 -p core=11 -p cpuset=10 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='12' AND type='default'" -p cpu=2 -p core=12 -p cpuset=11 -p gpu=3 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='13' AND type='default'" -p cpu=2 -p core=13 -p cpuset=12 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='14' AND type='default'" -p cpu=2 -p core=14 -p cpuset=13 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='15' AND type='default'" -p cpu=2 -p core=15 -p cpuset=14 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='16' AND type='default'" -p cpu=2 -p core=16 -p cpuset=15 -p gpu=4 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 FL1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
+
+
+###################################
+# clustera-2.fakesite.grid5000.fr
+###################################
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='17' AND type='default'" -p cpu=3 -p core=17 -p cpuset=0 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18' AND type='default'" -p cpu=3 -p core=18 -p cpuset=1 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='19' AND type='default'" -p cpu=3 -p core=19 -p cpuset=2 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='20' AND type='default'" -p cpu=3 -p core=20 -p cpuset=3 -p gpu=5 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=0 # This GPU is mapped on /dev/nvidia0
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='21' AND type='default'" -p cpu=3 -p core=21 -p cpuset=4 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='22' AND type='default'" -p cpu=3 -p core=22 -p cpuset=5 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='23' AND type='default'" -p cpu=3 -p core=23 -p cpuset=6 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='24' AND type='default'" -p cpu=3 -p core=24 -p cpuset=7 -p gpu=6 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=1 # This GPU is mapped on /dev/nvidia1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='25' AND type='default'" -p cpu=4 -p core=25 -p cpuset=8 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='26' AND type='default'" -p cpu=4 -p core=26 -p cpuset=9 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='27' AND type='default'" -p cpu=4 -p core=27 -p cpuset=10 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='28' AND type='default'" -p cpu=4 -p core=28 -p cpuset=11 -p gpu=7 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=2 # This GPU is mapped on /dev/nvidia2
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='29' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='30' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='31' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=8 -p gpu_model='GeForce RTX 2080 Ti' -p gpudevice=3 # This GPU is mapped on /dev/nvidia3
+echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.64.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge T640' -p switch='gw-fakesite' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA/SSD' -p chassis='Dell Inc. PowerEdge T640 9L1CBX2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=0 -p opa_rate=0 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=8192 -p memcpu=65536 -p memnode=131072 -p gpu_model='RTX 2080 Ti' -p gpu_count=4 -p exotic='NO' -p mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=0
+
+echo '================================================================================'
diff --git a/spec/output/wrong_variable_type_table_stderr.txt b/spec/output/wrong_variable_type_table_stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/spec/output/wrong_variable_type_table_stdout.txt b/spec/output/wrong_variable_type_table_stdout.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ff22c49a17bfe63c3bf67626e315beb43467d6a8
--- /dev/null
+++ b/spec/output/wrong_variable_type_table_stdout.txt
@@ -0,0 +1,36 @@
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
+|  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 2     | 1        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 3     | 2        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 4     | 3        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 5     | 4        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 6     | 5        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 7     | 6        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 1     | 8     | 7        | 2    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 9     | 8        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 10    | 9        | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 11    | 10       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 12    | 11       | 3    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 13    | 12       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 14    | 13       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 15    | 14       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-1           | 2     | 16    | 15       | 4    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 18    | 1        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 19    | 2        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 20    | 3        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 21    | 4        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 22    | 5        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 23    | 6        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 3     | 24    | 7        | 6    | 1                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 25    | 8        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 27    | 10       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 28    | 11       | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 29    | 12       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 30    | 13       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 31    | 14       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
+|  clustera | clustera-2           | 4     | 32    | 15       | 8    | 3                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
++---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
diff --git a/spec/output/yeti_empty_diff_stdout.txt b/spec/output/yeti_empty_diff_stdout.txt
index 03e9b05eef2f906337bf7e5011306bc58b3e74d5..33135060a946d9244ddd3c5aa5de21b385d0e3eb 100644
--- a/spec/output/yeti_empty_diff_stdout.txt
+++ b/spec/output/yeti_empty_diff_stdout.txt
@@ -1,5 +1,3 @@
-Downloading resources properties from https://api.grid5000.fr/stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999 ...
-... done
 Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed
   clustera-1: new node !
     ["+", "besteffort", "YES"]
@@ -17,6 +15,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -53,6 +52,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -89,6 +89,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -125,6 +126,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
     ["+", "ib_rate", 0]
@@ -165,6 +167,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -207,6 +210,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -249,6 +253,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-1.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -291,6 +296,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -333,6 +339,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -375,6 +382,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-2.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -417,6 +425,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -459,6 +468,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -501,6 +511,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-3.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -543,6 +554,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -585,6 +597,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -627,6 +640,7 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "eth_rate", 10]
     ["+", "exotic", "NO"]
     ["+", "gpu_count", 0]
+    ["+", "gpu_model", ""]
     ["+", "host", "clustera-4.fakesite.grid5000.fr"]
     ["+", "ib", "NO"]
     ["+", "ib_count", 0]
@@ -649,4 +663,4 @@ Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for ad
     ["+", "switch", "gw"]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "YES"]
-Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
+Properties that need to be created on the fakesite server: ip, cluster, nodemodel, switch, besteffort, deploy, virtual, cpuarch, cpucore, cputype, cpufreq, disktype, chassis, eth_count, eth_rate, ib_count, ib_rate, ib, opa_count, opa_rate, myri_count, myri_rate, myri, memcore, memcpu, memnode, gpu_model, gpu_count, exotic, mic, wattmeter, cluster_priority, max_walltime, production, maintenance, disk_reservation_count
diff --git a/spec/output/yeti_empty_print_stdout.txt b/spec/output/yeti_empty_print_stdout.txt
index 13cc3f230183a63e1271166c0d92a111588bdd28..0ecc1e37afc4711377b609fb35b8fdbdc649f67a 100644
--- a/spec/output/yeti_empty_print_stdout.txt
+++ b/spec/output/yeti_empty_print_stdout.txt
@@ -73,6 +73,7 @@ property_exist 'myri' || oarproperty -a myri --varchar
 property_exist 'memcore' || oarproperty -a memcore
 property_exist 'memcpu' || oarproperty -a memcpu
 property_exist 'memnode' || oarproperty -a memnode
+property_exist 'gpu_model' || oarproperty -a gpu_model --varchar
 property_exist 'gpu_count' || oarproperty -a gpu_count
 property_exist 'exotic' || oarproperty -a exotic --varchar
 property_exist 'mic' || oarproperty -a mic --varchar
@@ -154,7 +155,7 @@ oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=4 -p core=63 -p cpuset=59
 oarnodesetting -a -h 'clustera-1.fakesite.grid5000.fr' -s Absent -p host='clustera-1.fakesite.grid5000.fr' -p cpu=4 -p core=64 -p cpuset=63
 echo; echo 'Setting properties for clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -162,7 +163,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdb.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdb.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-1'
 
 echo; echo 'Setting properties for disk sdb.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-1'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-1'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -170,7 +171,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdc.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdc.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-1'
 
 echo; echo 'Setting properties for disk sdc.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-1'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-1'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-1 on host clustera-1.fakesite.grid5000.fr:'
@@ -178,7 +179,7 @@ disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdd.clustera-1' && echo '=> disk a
 disk_exist 'clustera-1.fakesite.grid5000.fr' 'sdd.clustera-1' || oarnodesetting -a -h '' -p host='clustera-1.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-1'
 
 echo; echo 'Setting properties for disk sdd.clustera-1 on host clustera-1.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-1'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-1'" -p ip='172.16.19.1' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGQSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-1.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-1' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -251,7 +252,7 @@ oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=127 -p cpuset=59
 oarnodesetting -a -h 'clustera-2.fakesite.grid5000.fr' -s Absent -p host='clustera-2.fakesite.grid5000.fr' -p cpu=8 -p core=128 -p cpuset=63
 echo; echo 'Setting properties for clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -259,7 +260,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdb.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdb.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-2'
 
 echo; echo 'Setting properties for disk sdb.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-2'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-2'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -267,7 +268,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdc.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdc.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-2'
 
 echo; echo 'Setting properties for disk sdc.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-2'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-2'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-2 on host clustera-2.fakesite.grid5000.fr:'
@@ -275,7 +276,7 @@ disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdd.clustera-2' && echo '=> disk a
 disk_exist 'clustera-2.fakesite.grid5000.fr' 'sdd.clustera-2' || oarnodesetting -a -h '' -p host='clustera-2.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-2'
 
 echo; echo 'Setting properties for disk sdd.clustera-2 on host clustera-2.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-2'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-2'" -p ip='172.16.19.2' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGRSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-2.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-2' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -348,7 +349,7 @@ oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=12 -p core=191 -p cpuset=59
 oarnodesetting -a -h 'clustera-3.fakesite.grid5000.fr' -s Absent -p host='clustera-3.fakesite.grid5000.fr' -p cpu=12 -p core=192 -p cpuset=63
 echo; echo 'Setting properties for clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -356,7 +357,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdb.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdb.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-3'
 
 echo; echo 'Setting properties for disk sdb.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-3'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-3'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -364,7 +365,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdc.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdc.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-3'
 
 echo; echo 'Setting properties for disk sdc.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-3'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-3'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-3 on host clustera-3.fakesite.grid5000.fr:'
@@ -372,7 +373,7 @@ disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdd.clustera-3' && echo '=> disk a
 disk_exist 'clustera-3.fakesite.grid5000.fr' 'sdd.clustera-3' || oarnodesetting -a -h '' -p host='clustera-3.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-3'
 
 echo; echo 'Setting properties for disk sdd.clustera-3 on host clustera-3.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-3'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-3.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-3'" -p ip='172.16.19.3' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGPSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-3.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-3' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
 
@@ -445,7 +446,7 @@ oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='cluste
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=16 -p core=255 -p cpuset=59
 oarnodesetting -a -h 'clustera-4.fakesite.grid5000.fr' -s Absent -p host='clustera-4.fakesite.grid5000.fr' -p cpu=16 -p core=256 -p cpuset=63
 echo; echo 'Setting properties for clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='default'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3
 
 echo '================================================================================'
 echo; echo 'Adding disk sdb.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -453,7 +454,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdb.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdb.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdb.clustera-4'
 
 echo; echo 'Setting properties for disk sdb.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-4'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdb.clustera-4'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdb.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:1:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdc.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -461,7 +462,7 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdc.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdc.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdc.clustera-4'
 
 echo; echo 'Setting properties for disk sdc.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-4'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdc.clustera-4'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdc.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:2:0' -p cpuset=-1
 
 echo '================================================================================'
 echo; echo 'Adding disk sdd.clustera-4 on host clustera-4.fakesite.grid5000.fr:'
@@ -469,6 +470,6 @@ disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdd.clustera-4' && echo '=> disk a
 disk_exist 'clustera-4.fakesite.grid5000.fr' 'sdd.clustera-4' || oarnodesetting -a -h '' -p host='clustera-4.fakesite.grid5000.fr' -p type='disk' -p disk='sdd.clustera-4'
 
 echo; echo 'Setting properties for disk sdd.clustera-4 on host clustera-4.fakesite.grid5000.fr:'; echo
-oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-4'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_model='NO' -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
+oarnodesetting --sql "host='clustera-4.fakesite.grid5000.fr' and type='disk' and disk='sdd.clustera-4'" -p ip='172.16.19.4' -p cluster='clustera' -p nodemodel='Dell PowerEdge R940' -p switch='gw' -p besteffort='YES' -p deploy='YES' -p virtual='ivt' -p cpuarch='x86_64' -p cpucore=16 -p cputype='Intel Xeon Gold 6130' -p cpufreq='2.1' -p disktype='SAS/SSD' -p chassis='Dell Inc. PowerEdge R940 6FGMSM2' -p eth_count=1 -p eth_rate=10 -p ib_count=0 -p ib_rate=0 -p ib='NO' -p opa_count=1 -p opa_rate=100 -p myri_count=0 -p myri_rate=0 -p myri='NO' -p memcore=12288 -p memcpu=196608 -p memnode=786432 -p gpu_count=0 -p exotic='NO' -p mic='NO' -p wattmeter='YES' -p cluster_priority=201801 -p max_walltime=0 -p production='NO' -p maintenance='NO' -p disk_reservation_count=3 -p host='clustera-4.fakesite.grid5000.fr' -p available_upto=0 -p disk='sdd.clustera-4' -p diskpath='/dev/disk/by-path/pci-0000:18:00.0-scsi-0:0:3:0' -p cpuset=-1
 
 echo '================================================================================'
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 90a4215c9b0b3385dcefd83f59fba93cbedf1705..f78eccf6d2ab6bbebf3493e5fb0c7f31cf7aec94 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -71,3 +71,89 @@ def prepare_stubs(oar_api, data_hierarchy)
   # Overload the 'load_data_hierarchy' to simulate the addition of a fake site in the input files
   expect_any_instance_of(Object).to receive(:load_data_hierarchy).and_return(JSON::parse(load_stub_file_content(data_hierarchy)))
 end
+
+def gen_stub(file, site, cluster, node_count = 9999)
+  data = load_data_hierarchy
+  data['sites'].delete_if { |k, v| site != k }
+  data['sites'].each_pair do |site_uid, s|
+    s['clusters'].delete_if { |k, v| cluster != k }
+  end
+  data.delete('network_equipments')
+  data['sites']['fakesite'] = data['sites'][site]
+  data['sites'].delete(site)
+  c = data['sites']['fakesite']['clusters']
+  c['clustera'] = c[cluster]
+  c.delete(cluster)
+  c['clustera']['uid'] = 'clustera'
+  nodes = c['clustera']['nodes']
+  nodes.keys.each do |k|
+    c, n = k.split('-')
+    nodes["clustera-#{n}"] = nodes[k] if n.to_i <= node_count
+    nodes.delete(k)
+  end
+
+  File::open("spec/input/#{file}.json", "w") do |fd|
+    fd.puts JSON::pretty_generate(data)
+  end
+end
+
+def check_oar_properties(o)
+  conf = RefRepo::Utils.get_api_config
+  specdir = File.expand_path(File.dirname(__FILE__))
+  stubbed_addresses = [
+    "#{conf["uri"]}",
+    "#{conf["uri"]}/oarapi/resources/details.json?limit=999999",
+    "#{conf["uri"]}stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999",
+  ]
+  stubbed_api_response = IO.read("#{specdir}/input/#{o[:oar]}.json")
+  stubbed_addresses.each do |stubbed_address|
+    stub_request(:get, stubbed_address).
+      with(
+        headers: {
+          'Accept'=>'*/*',
+        }).
+        to_return(status: 200, body: stubbed_api_response, headers: {})
+  end
+
+  # Overload the 'load_data_hierarchy' to simulate the addition of a fake site in the input files
+  expect_any_instance_of(Object).to receive(:load_data_hierarchy).exactly(3).and_return(JSON::parse(IO.read("#{specdir}/input/#{o[:data]}.json")))
+
+  uri = URI(conf["uri"])
+  response = Net::HTTP.get(uri)
+  expect(response).to be_an_instance_of(String)
+  {
+    'table' => { :table => true, :print => false, :update => false, :diff => false, :site => "fakesite", :clusters => ["clustera"] },
+    'print' => { :table => false, :print => true, :update => false, :diff => false, :site => "fakesite", :clusters => ["clustera"] },
+    'diff'  => { :table => false, :print => false, :update => false, :diff => true, :site => "fakesite", :clusters => ["clustera"] }
+  }.each_pair do |type, options|
+    output = capture do
+      begin
+        generate_oar_properties(options)
+      rescue
+        puts $!.message
+      end
+    end
+    # stdout
+    ofile = "#{specdir}/output/#{o[:case]}_#{type}_stdout.txt"
+    if not File::exist?(ofile)
+      puts "Output file #{ofile} did not exist, created."
+      File::open(ofile, "w") { |fd| fd.print output[:stdout] }
+      ofile_data = output[:stdout]
+    else
+      ofile_data = IO::read(ofile)
+    end
+    expect(output[:stdout]).to eq(ofile_data)
+    # stderr
+    ofile = "#{specdir}/output/#{o[:case]}_#{type}_stderr.txt"
+    if not File::exist?(ofile)
+      puts "Output file #{ofile} did not exist, created."
+      File::open(ofile, "w") { |fd| fd.print output[:stderr] }
+      ofile_data = output[:stderr]
+    else
+      ofile_data = IO::read(ofile)
+    end
+    expect(output[:stderr]).to eq(ofile_data)
+
+  end
+end
+