From f537285524d1f0604a74abbf11b6670d16e77936 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 6 Sep 2019 11:29:15 +0200
Subject: [PATCH 01/57] OAR Properties generator: add support for per-core
 properties (including GPU)

---
 Gemfile                                       |    2 +
 Gemfile.lock                                  |   23 +
 Rakefile                                      |   50 +-
 lib/refrepo/gen/oar-properties.rb             |  996 +++++--
 scripts/nvidia-numa-mapper.rb                 |   71 +
 tests/oar_properties_spec.rb                  |  450 +++
 .../dump_oar_api_configured_server.json       | 2446 +++++++++++++++++
 .../dump_oar_api_empty_server.json            |    7 +
 .../load_data_hierarchy_stubbed_data.json     |    1 +
 9 files changed, 3850 insertions(+), 196 deletions(-)
 create mode 100755 scripts/nvidia-numa-mapper.rb
 create mode 100644 tests/oar_properties_spec.rb
 create mode 100644 tests/stub_oar_properties/dump_oar_api_configured_server.json
 create mode 100644 tests/stub_oar_properties/dump_oar_api_empty_server.json
 create mode 100644 tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json

diff --git a/Gemfile b/Gemfile
index 728910cfe70..c6da111ccad 100644
--- a/Gemfile
+++ b/Gemfile
@@ -9,3 +9,5 @@ gem "dns-zone"
 gem "ruby-cute", :require => "cute"
 gem "peach"
 gem "restfully"
+gem "rspec"
+gem "webmock"
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index 04818a18a7b..f821a002ad9 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -5,6 +5,9 @@ GEM
       public_suffix (>= 2.0.2, < 4.0)
     backports (3.15.0)
     bond (0.4.3)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    diff-lcs (1.3)
     diffy (3.3.0)
     dns-zone (0.3.1)
     domain_name (0.5.20190701)
@@ -71,14 +74,32 @@ GEM
       ripl (>= 0.3.0)
     ripl-short_errors (0.1.0)
       ripl (>= 0.2.8)
+    rspec (3.8.0)
+      rspec-core (~> 3.8.0)
+      rspec-expectations (~> 3.8.0)
+      rspec-mocks (~> 3.8.0)
+    rspec-core (3.8.2)
+      rspec-support (~> 3.8.0)
+    rspec-expectations (3.8.4)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-mocks (3.8.1)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-support (3.8.2)
     ruby-cute (0.12)
       ipaddress (>= 0.8)
       json (>= 1.8)
       net-ssh-multi (>= 1.2)
       rest-client (>= 1.6)
+    safe_yaml (1.0.5)
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.7.6)
+    webmock (3.7.5)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff (>= 0.4.0, < 2.0.0)
 
 PLATFORMS
   ruby
@@ -92,4 +113,6 @@ DEPENDENCIES
   net-ssh
   peach
   restfully
+  rspec
   ruby-cute
+  webmock
diff --git a/Rakefile b/Rakefile
index 096abbb4240..97bd0a76be6 100644
--- a/Rakefile
+++ b/Rakefile
@@ -127,29 +127,67 @@ namespace :gen do
     exit(ret)
   end
 
-  desc "Generate OAR properties -- parameters: [SITE={grenoble,...}] [CLUSTER={yeti,...}] [NODE={dahu-1,...}] DO={diff,print,update} [VERBOSE={0,1,2,3}]"
+  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]"
   task "oar-properties" do
+    # Manage oar-properties for a given set of Grid'5000 cluster. The task takes the following parameters
+    # Params:
+    # +SITE+:: Grid'5000 site (Nantes, Nancy, ...).
+    # +CLUSTERS+:: a comma separated list of Grid'5000 clusters (econome, ecotype, ...). This argument is optional:
+    #     if no clusters is provided, the script will be run on each cluster of the specified site.
+    # +Do+:: specify the action to execute:
+    #       - print: computes a mapping (server, cpu, core, gpu) for the given clusters, and shows OAR shell commands
+    #         that would be run on an OAR server to converge to this mapping. This action try to reuse existing OAR
+    #         resource's IDs, by fetching the current state of the OAR database via the OAR REST API (see the
+    #         OAR_API_SERVER and OAR_API_PORT arguments).
+    #       - table: show an ASCII table that illustrates the mapping (server, cpu, core, gpu) computed via action
+    #         "print"
+    #       - update: apply the commands of computed with the "print" task, to a given OAR server (see the OAR_SERVER
+    #         and OAR_SERVER_USER arguments).
+    #       - diff: Compare the mapping (server, cpu, core, gpu) computed with action "print", with the existing mapping
+    #         fetched from the OAR REST API (see the OAR_API_SERVER, OAR_API_PORT).
+    # +OAR_SERVER+:: IP address fo the OAR server that will serve as a target of the generator. The generator will
+    #         connect via SSH to this server. By default, it targets the OAR server of the Grid'5000 site.
+    # +OAR_SERVER_USER+:: SSH user that may be used to connect to the OAR server. By default, it targets the OAR server of the Grid'5000 site.
+    # +OAR_API_SERVER+:: IP address fo the server that hosts the OAR API. The generator will use it to understand the
+    #         existing (server, cpu, core, gpu) mapping.
+    # +OAR_API_PORT+:: HTTP port used to connect to the REST API
+
     require 'refrepo/gen/oar-properties'
     options = {}
-    options[:sites] = ( ENV['SITE'] ? ENV['SITE'].split(',') : G5K_SITES )
+
     if ENV['CLUSTER']
       options[:clusters] = ENV['CLUSTER'].split(',')
     end
-    if ENV['NODE']
-      options[:nodes] = ENV['NODE'].split(',')
+    if ENV['SITE']
+      options[:site] = ENV['SITE']
+    else
+      puts "You must specify a site."
+      exit(1)
+    end
+
+    if not G5K_SITES.include?(options[:site])
+      puts "Invalid site: #{options[:site]}"
+      exit(1)
     end
+
     if ENV['OAR_SERVER']
       options[:ssh] ||= {}
       options[:ssh][:host] = ENV['OAR_SERVER']
     end
-    options[:diff] = false
+    if ENV['OAR_SERVER_USER']
+      options[:ssh] ||= {}
+      options[:ssh][:user] = ENV['OAR_SERVER_USER']
+    end
     options[:print] = false
+    options[:diff] = false
     options[:update] = false
+    options[:table] = false
     if ENV['DO']
       ENV['DO'].split(',').each do |t|
-        options[:diff] = true if t == 'diff'
+        options[:table] = true if t == 'table'
         options[:print] = true if t == 'print'
         options[:update] = true if t == 'update'
+        options[:diff] = true if t == 'diff'
       end
     else
       puts "You must specify something to do using DO="
diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 95e4aa459e9..7b0cd49098d 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -9,6 +9,296 @@ class MissingProperty < StandardError; end
 
 MiB = 1024**2
 
+# CPU distribution can be: round-robin | continuous
+DEFAULT_CPUSET_MAPPING = "continuous"
+
+# GPU distribution can be: round-robin | continuous
+DEFAULT_GPUSET_MAPPING = "continuous"
+
+############################################
+# Functions related to the "TABLE" operation
+############################################
+
+def export_rows_as_formated_line(generated_hierarchy)
+  # Display header
+  puts "+#{'-' * 10} + #{'-' * 20} + #{'-' * 5} + #{'-' * 5} + #{'-' * 8} + #{'-' * 4} + #{'-' * 20} + #{'-' * 30} + #{'-' * 30}+"
+  puts "|#{'cluster'.rjust(10)} | #{'host'.ljust(20)} | #{'cpu'.ljust(5)} | #{'core'.ljust(5)} | #{'cpuset'.ljust(8)} | #{'gpu'.ljust(4)} | #{'gpudevice'.ljust(20)} | #{'cpumodel'.ljust(30)} | #{'gpumodel'.ljust(30)}|"
+  puts "+#{'-' * 10} + #{'-' * 20} + #{'-' * 5} + #{'-' * 5} + #{'-' * 8} + #{'-' * 4} + #{'-' * 20} + #{'-' * 30} + #{'-' * 30}+"
+
+  oar_rows = generated_hierarchy[:nodes].map{|node| node[:oar_rows]}.flatten
+
+  # Display rows
+  oar_rows.each do |row|
+    cluster = row[:cluster].to_s
+    host = row[:host].to_s
+    cpu = row[:cpu].to_s
+    core = row[:core].to_s
+    cpuset = row[:cpuset].to_s
+    gpu = row[:gpu].to_s
+    gpudevice = row[:gpudevice].to_s
+    cpumodel = row[:cpumodel].to_s
+    gpumodel = row[:gpumodel].to_s
+    puts "|#{cluster.rjust(10)} | #{host.ljust(20)} | #{cpu.ljust(5)} | #{core.ljust(5)} | #{cpuset.ljust(8)} | #{gpu.ljust(4)} | #{gpudevice.ljust(20)} | #{cpumodel.ljust(30)} | #{gpumodel.ljust(30)}|"
+  end
+  # Display footer
+  puts "+#{'-' * 10} + #{'-' * 20} + #{'-' * 5} + #{'-' * 5} + #{'-' * 8} + #{'-' * 4} + #{'-' * 20} + #{'-' * 30} + #{'-' * 30}+"
+end
+
+############################################
+# Functions related to the "PRINT" operation
+############################################
+
+# Generates an ASCII separator
+def generate_separators()
+  command = "echo '================================================================================'"
+  return command + "\n"
+end
+
+def generate_create_disk_cmd(host, disk)
+  disk_exist = "disk_exist '#{host}' '#{disk}'"
+  command = "echo; echo 'Adding disk #{disk} on host #{host}:'\n"
+  command += "#{disk_exist} && echo '=> disk already exists'\n"
+  command += "#{disk_exist} || oarnodesetting -a -h '' -p host='#{host}' -p type='disk' -p disk='#{disk}'"
+  return command + "\n\n"
+end
+
+def generate_set_node_properties_cmd(host, default_properties)
+  if not default_properties.nil?
+    return '' if default_properties.size == 0
+    command  = "echo; echo 'Setting properties for #{host}:'; echo\n"
+    command += "oarnodesetting --sql \"host='#{host}' and type='default'\" -p "
+    command += properties_internal(default_properties)
+    return command + "\n\n"
+  else
+    return "echo ; echo 'Not setting properties for #{host}: node is not available in ref-api (retired?)'; echo\n\n"
+  end
+end
+
+def generate_set_disk_properties_cmd(host, disk, disk_properties)
+  return '' if disk_properties.size == 0
+  command = "echo; echo 'Setting properties for disk #{disk} on host #{host}:'; echo\n"
+  command += "oarnodesetting --sql \"host='#{host}' and type='disk' and disk='#{disk}'\" -p "
+  command += disk_properties_internal(disk_properties)
+  return command + "\n\n"
+end
+
+def generate_create_oar_property_cmd(properties_keys)
+  command = ''
+  ignore_keys_list = ignore_default_keys()
+  properties_keys.each do |key, key_type|
+    if ignore_keys_list.include?(key)
+      next
+    end
+    if key_type == Fixnum # rubocop:disable Lint/UnifiedInteger
+      command += "property_exist '#{key}' || oarproperty -a #{key}\n"
+    elsif key_type == String
+      command += "property_exist '#{key}' || oarproperty -a #{key} --varchar\n"
+    else
+      raise "Error: the type of the '#{key}' property is unknown (Integer/String). Cannot generate the corresponding 'oarproperty' command. You must create this property manually ('oarproperty -a #{key} [--varchar]')"
+    end
+  end
+  return command
+end
+
+
+# Generates helper functions:
+#   - property_exist : check if a property exists
+#   - node_exist : check if a node exists
+#   - disk_exist : check if a disk exists
+#
+# and variables which help to add nex resources:
+#   - NEXT_AVAILABLE_CPU_ID : the next identifier that can safely be used for a new cpi
+#   - NEXT_AVAILABLE_CORE_ID : the next identifier that can safely be used for a new core
+def generate_oar_commands_header()
+  return %Q{
+#! /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
+}
+end
+
+
+# Ensures that all required OAR properties exists.
+# OAR properties can be divided in two sets:
+#   - properties that were previously created by 'oar_resources_add'
+#   - remaining properties that can be generated from API
+def generate_oar_property_creation(site_name, data_hierarchy)
+
+  #############################################
+  # Create properties that were previously created
+  # by 'oar_resources_add'
+  ##############################################
+  commands = %Q{
+#############################################
+# 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 remaining properties (from API)
+  #############################################
+  commands += %Q{
+#############################################
+# Create OAR properties if they don't exist
+#############################################
+
+}
+
+  # Fetch oar properties from ref repo
+  # global_hash = load_data_hierarchy
+  global_hash = data_hierarchy
+  site_properties = get_oar_properties_from_the_ref_repo(global_hash, {
+      :sites => [site_name]
+  })[site_name]
+  property_keys = get_property_keys(site_properties)
+
+  # Generate OAR commands for creating properties
+  commands += generate_create_oar_property_cmd(property_keys)
+
+  return commands
+end
+
+
+# Exports a description of OAR ressources as a bunch of "self contained" OAR
+# commands. Basically it does the following:
+#   (0) * It adds an header containing helper functions and detects the next
+#         CPU and CORE IDs that could be used by new OAR resources
+#         (cf "generate_oar_commands_header()")
+#   (0) * It creates OAR properties if they don't already exist (cf "generate_oar_property_creation()")
+#   (1) * It iterates over nodes contained in the 'generated_hierarchy' hash-table
+#   (2)    > * It iterates over the oar resources of the node
+#   (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)
+
+  result = ""
+
+  # 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)
+
+  # Iterate over nodes of the generated resource hierarchy
+  generated_hierarchy[:nodes].each do |node|
+    result += %Q{
+
+###################################
+# #{node[:fqdn]}
+###################################
+}
+
+    # Iterate over the resources of the OAR node
+    node[:oar_rows].each do |oar_ressource_row|
+      # host = oar_ressource_row[:host].to_s
+      host = oar_ressource_row[:fqdn].to_s
+      cpu = oar_ressource_row[:cpu].to_s
+      core = oar_ressource_row[:core].to_s
+      cpuset = oar_ressource_row[:cpuset].to_s
+      gpu = oar_ressource_row[:gpu].to_s
+      gpudevice = oar_ressource_row[:gpudevice].to_s
+      gpumodel = oar_ressource_row[:gpumodel].to_s
+      gpudevicepath = oar_ressource_row[:gpudevicepath].to_s
+      resource_id = oar_ressource_row[:resource_id]
+
+      if resource_id == -1 or resource_id.nil?
+        # Add the resource to the OAR DB
+        if gpu == ''
+          result += "oarnodesetting -a -h '#{host}' -p host='#{host}' -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset}\n"
+        else
+          result += "oarnodesetting -a -h '#{host}' -p host='#{host}' -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset} -p gpu=#{gpu} -p gpu_model='#{gpumodel}' -p gpudevice=#{gpudevice} # This GPU is mapped on #{gpudevicepath}\n"
+        end
+      else
+        # Update the resource
+        if gpu == ''
+          result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset}\n"
+        else
+          result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset} -p gpu=#{gpu} -p gpu_model='#{gpumodel}' -p gpudevice=#{gpudevice} # This GPU is mapped on #{gpudevicepath}\n"
+        end
+      end
+    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|
+      # As <storage_device> is an Array, where the first element is the device name (i.e. sda, sdb, ...),
+      # and the second element is a dictionnary containing information about the storage device,
+      # thus two variables are created:
+      #    - <storage_device_name> : variable that contains the device name (sda, sdb, ...)
+      #    - <storage_device_name_with_hostname> : variable that will be the ID of the storage. It follows this
+      #       pattern : "sda1.ecotype-48"
+      storage_device_name = storage_device["device"]
+      storage_device_name_with_hostname = "#{storage_device_name}.#{node[:name]}"
+
+      # 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
+
+      if storage_device_oar_properties_tuple.nil? or storage_device_oar_properties_tuple.size < 2
+        raise "Error: could not find a site properties for disk #{storage_device_name_with_hostname}"
+      end
+      storage_device_oar_properties = storage_device_oar_properties_tuple[1]
+
+      result += generate_separators()
+
+      # Ensure that the storage device exists
+      result += generate_create_disk_cmd(node[:fqdn], storage_device_name_with_hostname)
+
+      # Set the OAR properties associated to this storage device
+      result += generate_set_disk_properties_cmd(node[:fqdn], storage_device_name_with_hostname, storage_device_oar_properties)
+    end
+
+    result += generate_separators()
+  end
+
+  return result
+end
+
+############################################
+# Functions related to the "DIFF" operation
+############################################
+
 def get_ids(host)
   node_uid, site_uid, grid_uid, _tdl = host.split('.')
   cluster_uid, node_num = node_uid.split('-')
@@ -189,6 +479,40 @@ def get_maintenance_property(node)
   return maintenance
 end
 
+# Return a list of properties as a hash: { property1 => String, property2 => Fixnum, ... }
+# We detect the type of the property (Fixnum/String) by looking at the existing values
+def get_property_keys(properties)
+  properties_keys = {}
+  properties.each do |type, type_properties|
+    properties_keys.merge!(get_property_keys_internal(type, type_properties))
+  end
+  return properties_keys
+end
+
+def properties_internal(properties)
+  str = properties
+            .to_a
+            .select{|k, v| not ignore_default_keys.include? k}
+            .map do |(k, v)|
+                v = "YES" if v == true
+                v = "NO"  if v == false
+                !v.nil? ? "#{k}=#{v.inspect.gsub("'", "\\'").gsub("\"", "'")}" : nil
+            end.compact.join(' -p ')
+  return str
+end
+
+def disk_properties_internal(properties)
+  str = properties
+            .to_a
+            .select{|k, v| not v.nil? and not v==""}
+            .map do |(k, v)|
+    v = "YES" if v == true
+    v = "NO"  if v == false
+    !v.nil? ? "#{k}=#{v.inspect.gsub("'", "\\'").gsub("\"", "'")}" : nil
+  end.compact.join(' -p ')
+  return str
+end
+
 # Returns the expected properties of the reservable disks. These
 # properties are then compared with the values in OAR database, to
 # generate a diff.
@@ -270,12 +594,19 @@ def get_oar_data(site_uid, filename, options)
     puts "Reading OAR resources properties from file #{filename}" if options[:verbose]
     oarnodes = YAML.load(File.open(filename, 'rb') { |f| f.read })
   else
-    api_uri = URI.parse('https://api.grid5000.fr/stable/sites/' + site_uid  + '/internal/oarapi/resources/details.json?limit=999999')
+
+    if options[:api][:uri] and not options[:api][:uri].include? "api.grid5000.fr"
+      api_uri = URI.parse(options[:api][:uri]+'/oarapi/resources/details.json?limit=999999')
+    else
+      api_uri = URI.parse('https://api.grid5000.fr/stable/sites/' + site_uid  + '/internal/oarapi/resources/details.json?limit=999999')
+    end
 
     # Download the OAR properties from the OAR API (through G5K API)
     puts "Downloading resources properties from #{api_uri} ..." if options[:verbose]
-    http = Net::HTTP.new(api_uri.host, Net::HTTP.https_default_port)
-    http.use_ssl = true
+    http = Net::HTTP.new(api_uri.host, api_uri.port)
+    if api_uri.scheme == "https"
+      http.use_ssl = true
+    end
     request = Net::HTTP::Get.new(api_uri.request_uri, {'User-Agent' => 'reference-repository/gen/oar-properties'})
 
     # For outside g5k network access
@@ -299,16 +630,6 @@ def get_oar_data(site_uid, filename, options)
   return oarnodes
 end
 
-# Return a list of properties as a hash: { property1 => String, property2 => Fixnum, ... }
-# We detect the type of the property (Fixnum/String) by looking at the existing values
-def get_property_keys(properties)
-  properties_keys = {}
-  properties.each do |type, type_properties|
-    properties_keys.merge!(get_property_keys_internal(type, type_properties))
-  end
-  return properties_keys
-end
-
 def get_property_keys_internal(_type, type_properties)
   properties_keys = {}
   type_properties.each do |key, node_properties|
@@ -397,8 +718,12 @@ def ignore_default_keys()
     "besteffort",
     "chunks",
     "comment", # TODO
-    "core",
-    "cpu",
+    "core", # This property was created by 'oar_resources_add'
+    "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",
     "deploy",
@@ -406,7 +731,6 @@ def ignore_default_keys()
     "expiry_date",
     "finaud_decision",
     "grub",
-    "host", # TODO
     "jobs", # This property exists when a job is running
     "last_available_upto",
     "last_job_date",
@@ -448,61 +772,6 @@ def ignore_keys()
   return ignore_default_keys() + ignore_disk_keys()
 end
 
-def oarcmd_script_header()
-  return <<EOF
-#! /usr/bin/env bash
-
-set -eu
-set -o pipefail
-
-EOF
-end
-
-def oarcmd_create_helper_functions()
-  return <<EOF
-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'") ]]
-}
-
-EOF
-end
-
-def oarcmd_separator
-  return "echo '" + '=' * 80 + "'\n\n"
-end
-
-def oarcmd_create_properties(properties_keys)
-  command = ''
-  properties_keys.each do |key, key_type|
-    if key_type == Fixnum # rubocop:disable Lint/UnifiedInteger
-      command += "property_exist '#{key}' || oarproperty -a #{key}\n"
-    elsif key_type == String
-      command += "property_exist '#{key}' || oarproperty -a #{key} --varchar\n"
-    else
-      raise "Error: the type of the '#{key}' property is unknown (Integer/String). Cannot generate the corresponding 'oarproperty' command. You must create this property manually ('oarproperty -a #{key} [--varchar]')"
-    end
-  end
-  return command
-end
-
-def oarcmd_create_node(host, default_properties, node_hash)
-  id = get_ids(host)
-  node_exist = "node_exist '#{host}'"
-  command  = "echo; echo 'Adding host #{host}:'\n"
-  command += "#{node_exist} && echo '=> host already exists'\n"
-  command += "#{node_exist} || oar_resources_add -a --hosts 1 --host0 #{id['node_num']} --host-prefix #{id['cluster_uid']}- --host-suffix .#{id['site_uid']}.#{id['grid_uid']}.fr --cpus #{node_hash['architecture']['nb_procs']} --cores #{default_properties['cpucore']}"
-  command += ' | bash'
-  return command + "\n\n"
-end
-
 def oarcmd_set_node_properties(host, default_properties)
   return '' if default_properties.size == 0
   command  = "echo; echo 'Setting properties for #{host}:'; echo\n"
@@ -511,54 +780,52 @@ def oarcmd_set_node_properties(host, default_properties)
   return command + "\n\n"
 end
 
-def properties_internal(properties)
-  str = properties.to_a.map do |(k, v)|
-    v = "YES" if v == true
-    v = "NO"  if v == false
-    !v.nil? ? "#{k}=#{v.inspect.gsub("'", "\\'").gsub("\"", "'")}" : nil
-  end.compact.join(' -p ')
-  return str
-end
-
-def oarcmd_create_disk(host, disk)
-  disk_exist = "disk_exist '#{host}' '#{disk}'"
-  command = "echo; echo 'Adding disk #{disk} on host #{host}:'\n"
-  command += "#{disk_exist} && echo '=> disk already exists'\n"
-  command += "#{disk_exist} || oarnodesetting -a -h '' -p host='#{host}' -p network_address='' -p type='disk' -p disk='#{disk}'"
-  return command + "\n\n"
-end
-
-def oarcmd_set_disk_properties(host, disk, disk_properties)
-  return '' if disk_properties.size == 0
-  command = "echo; echo 'Setting properties for disk #{disk} on host #{host}:'; echo\n"
-  command += "oarnodesetting --sql \"host='#{host}' and type='disk' and disk='#{disk}'\" -p "
-  command += properties_internal(disk_properties)
-  return command + "\n\n"
+def get_oar_resources_from_oar(options)
+  properties = {}
+  sites = options[:sites]
+  diff = options[:diff]
+  sites.each do |site_uid|
+    filename = diff.is_a?(String) ? diff.gsub('%s', site_uid) : nil
+    properties[site_uid] = {}
+    properties[site_uid]['resources'] = get_oar_data(site_uid, filename, options)
+  end
+  # for debugging
+  if ENV['FAKE_EMPTY_SITE']
+    properties.keys.each do |site|
+      properties[site]['resources'] = []
+    end
+  end
+  return properties
 end
 
 # sudo exec
-def ssh_exec(cmds, options, site_uid)
+def run_commands_via_ssh(cmds, options, verbose=true)
   # The following is equivalent to : "cat cmds | bash"
-  #res = ""
-  c = Net::SSH.start(options[:ssh][:host].gsub('%s', site_uid), options[:ssh][:user])
+  res = ""
+  c = Net::SSH.start(options[:ssh][:host], options[:ssh][:user])
   c.open_channel { |channel|
     channel.exec('sudo bash') { |ch, success|
       # stdout
       channel.on_data { |ch2, data|
-        puts data #if options[:verbose] # ssh cmd output
+        if verbose
+          puts data #if options[:verbose] # ssh cmd output
+        end
+        res += data
       }
       # stderr
       channel.on_extended_data do |ch2, type, data|
-        puts data
+        if verbose
+          puts data #if options[:verbose] # ssh cmd output
+        end
+        res += data
       end
 
-      cmds.each { |cmd|
-        channel.send_data cmd
-      }
+      channel.send_data cmds
       channel.eof!
     }
   }
   c.loop
+  return res
 end
 
 # Get the properties of each node
@@ -586,22 +853,10 @@ def get_oar_properties_from_oar(options)
   return properties
 end
 
-# Main program
-# properties['ref'] = properties from the reference-repo
-# properties['oar'] = properties from the OAR server
-# properties['diff'] = diff between "ref" and "oar"
-
-def generate_oar_properties(options)
-  options[:api] = {}
-  conf = RefRepo::Utils.get_api_config
-  options[:api][:user] = conf['username']
-  options[:api][:pwd] = conf['password']
-  options[:ssh] ||= {}
-  options[:ssh][:user] = 'g5kadmin'
-  options[:ssh][:host] ||= 'oar.%s.g5kadmin'
-  ret = true
-  global_hash = load_data_hierarchy
+def do_diff(options, generated_hierarchy, data_hierarchy)
 
+  # global_hash = load_data_hierarchy
+  global_hash = data_hierarchy
   properties = {}
   properties['ref'] = get_oar_properties_from_the_ref_repo(global_hash, options)
   properties['oar'] = get_oar_properties_from_oar(options)
@@ -612,6 +867,7 @@ def generate_oar_properties(options)
     'oar' => {},
     'diff' => {}
   }
+
   options[:sites].each do |site_uid|
     properties_keys['ref'][site_uid] = get_property_keys(properties['ref'][site_uid])
   end
@@ -728,102 +984,462 @@ def generate_oar_properties(options)
         ret = false unless options[:update] || options[:print]
       end
       puts "Skipped retired nodes: #{skipped_nodes}" if skipped_nodes.any?
+
+
+      # Check that CPUSETs on the OAR server are consistent with what would have been generated
+      oar_resources = get_oar_resources_from_oar(options)
+
+      fix_cmds = ""
+
+      options[:clusters].each do |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"}
+
+
+        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
+
+              {: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)
+                  puts "Error: resource #{corresponding_resource[0]["id"]} is associated to #{value.upcase} (#{corresponding_resource[0][value]}), while I computed that it should be associated to #{row[key]}"
+                  fix_cmds += %Q{
+oarnodesetting --sql "resource_id='#{corresponding_resource[0]["id"]}' AND type='default'" -p #{value}=#{row[key]}}
+                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 fix_cmds.empty?
+        puts ""
+        puts "################################################"
+        puts "# You may execute the following commands to fix "
+        puts "# some resources of the OAR database"
+        puts "################################################"
+        puts fix_cmds
+      end
+
     end # if options[:diff]
   end
+end
+
 
-  # Build and execute commands
-  if options[:print] || options[:update]
-    skipped_nodes = [] unless options[:diff]
-    opt = options[:diff] ? 'diff' : 'ref'
+def extract_clusters_description(clusters, site_name, options, data_hierarchy, site_properties)
 
-    properties[opt].each do |site_uid, site_properties|
-      options[:print].is_a?(String) ? o = File.open(options[:print].gsub('%s', site_uid), 'w') : o = $stdout.dup
+  # This function works as follow:
+  # (1) Initialization
+  #    (a) Load the local data contained in YAML input files
+  #    (b) Handle the program arguments (detects which site and which clusters
+  #        are targeted), and what action is requested
+  #    (c) Fetch the OAR properties of the requested site
+  # (2) Generate an OAR node hierarchy
+  #    (a) Iterate over cluster > nodes > cpus > cores
+  #    (b) Detect existing resource_ids and {CPU, CORE, CPUSET, GPU}'s IDs
+  #    (c) [if cluster with GPU] detects the existing mapping GPU <-> CPU in the cluster
+  #    (d) Associate a cpuset to each core
+  #    (e) [if cluster with GPU] Associate a gpuset to each core
 
-      ssh_cmd = []
-      cmd = []
-      cmd << oarcmd_script_header
-      cmd << oarcmd_separator
 
-      # Create helper functions
-      cmd << oarcmd_create_helper_functions
-      cmd << oarcmd_separator
+  ############################################
+  # (1) Initialization
+  ############################################
 
-      # Make sure the host property is created (for a new site),
-      # because it is needed by the node_exist helper function
-      cmd << "property_exist host || oarproperty -a host --varchar\n\n" 
+  oar_resources = get_oar_resources_from_oar(options)
+
+  generated_hierarchy = {
+      :nodes => []
+  }
 
-      # Create properties keys
-      properties_keys[opt][site_uid].delete_if { |k, _v| ignore_default_keys.include?(k) }
-      unless properties_keys[opt][site_uid].empty?
-        cmd << oarcmd_create_properties(properties_keys[opt][site_uid]) + "\n"
-        cmd << oarcmd_separator
+  ############################################
+  # (2) Generate an OAR node hierarchy
+  ############################################
+
+  site_resources = oar_resources[site_name]["resources"].select{|r| r["type"] == "default"}
+
+  next_rsc_ids = {
+      "cpu" => site_resources.length > 0 ? site_resources.map{|r| r["cpu"]}.max : 0,
+      "core" => site_resources.length > 0 ? site_resources.map{|r| r["core"]}.max : 0,
+      "gpu" => site_resources.length > 0 ? site_resources.map{|r| r["gpu"]}.select{|x| not x.nil?}.max : 0
+  }
+
+  newly_allocated_resources = {
+      "cpu" => [],
+      "core" =>[],
+      "gpu" => []
+  }
+
+  # Some existing cluster have GPUs, but no GPU ID has been allocated to them
+  if next_rsc_ids["gpu"].nil?
+    next_rsc_ids["gpu"] = 0
+  end
+
+  ############################################
+  # (2-a) Iterate over clusters. (rest: servers, cpus, cores)
+  ############################################
+
+  clusters.sort.each do |cluster_name|
+
+    cpu_idx = 0
+    core_idx = 0
+
+    cluster_resources = site_resources.select{|r| r["cluster"] == cluster_name}
+
+    cluster_desc_from_input_files = data_hierarchy['sites'][site_name]['clusters'][cluster_name]
+    first_node = cluster_desc_from_input_files['nodes'].first[1]
+
+    # Some clusters such as graphite have a different organisation:
+    # for example, graphite-1 is organised as follow:
+    #   1st resource => cpu: 665, core: 1903
+    #   2nd resource => cpu: 666, core: 1904
+    #   3rd resource => cpu: 665, core: 1905
+    #   4th resource => cpu: 666, core: 1906
+    #   ...
+    #
+    # To cope with such cases and ensure an homogeneous processing a "is_quirk_cluster" variable is set to true.
+    is_quirk_cluster = false
+
+    node_count = cluster_desc_from_input_files['nodes'].length
+
+    cpu_count = first_node['architecture']['nb_procs']
+    core_count = first_node['architecture']['nb_cores'] / cpu_count
+    gpu_count = first_node.key?("gpu_devices") ? first_node["gpu_devices"].length : 0
+
+    cpu_model = "#{first_node['processor']['model']} #{first_node['processor']['version']}"
+    cpuset_mapping = first_node.key?("cpuset_mapping") ? first_node["cpuset_mapping"] : DEFAULT_CPUSET_MAPPING
+    # Detect how 'GPUSETs' are distributed over CPUs/GPUs of servers of this cluster
+    gpuset_mapping = DEFAULT_GPUSET_MAPPING
+
+    ############################################
+    # (2-b) Detect existing resource_ids and {CPU, CORE, CPUSET, GPU}'s IDs
+    ############################################
+
+    # Detect if the cluster is new, or if it is already known by OAR
+    is_a_new_cluster = cluster_resources.select{|x| x["cluster"] == cluster_name}.length == 0
+
+    # <phys_rsc_map> is a hash that centralises variables that will be used for managing IDs of CPUs, COREs, GPUs of
+    # the cluster that is going to be updated. <phys_rsc_map> is useful to detect situations where the current number
+    # of resources associated to a cluster does not correspond to the needs of the cluster.
+    phys_rsc_map = {
+        "cpu" => {
+          :current_ids => [],
+          :per_server_count => first_node['architecture']['nb_procs'],
+          :per_cluster_count => node_count * cpu_count
+        },
+        "core" => {
+          :current_ids => [],
+          :per_server_count => first_node['architecture']['nb_cores'] / cpu_count,
+          :per_cluster_count => node_count * cpu_count * core_count
+        },
+        "gpu" => {
+          :current_ids => [],
+          :per_server_count => first_node.key?("gpu_devices") ? first_node["gpu_devices"].length : 0,
+          :per_cluster_count => node_count * gpu_count
+        },
+    }
+
+    # For each physical ressource, we prepare a list of IDs:
+    #   a) if the cluster is new: the IDs is a list of number in [max_resource_id, max_resource_id + cluster_resource_count]
+    #   a) if the cluster is not new: the IDs is the list of existing resources
+    phys_rsc_map.each do |physical_resource, variables|
+      if is_a_new_cluster
+        variables[:current_ids] = [*next_rsc_ids[physical_resource]+1..next_rsc_ids[physical_resource]+variables[:per_cluster_count]]
+        next_rsc_ids[physical_resource] = variables[:per_server_count] > 0 ? variables[:current_ids].max : next_rsc_ids[physical_resource]
+      else
+        variables[:current_ids] = cluster_resources.map{|r| r[physical_resource]}.select{|x| not x.nil?}.uniq
       end
+    end
 
-      # Build and output node commands
-      site_properties['default'].each_filtered_node_uid(options[:clusters], options[:nodes]) do |node_uid, node_properties|
-        cluster_uid = node_uid.split('-')[0]
-        node_address = [node_uid, site_uid, 'grid5000.fr'].join('.')
+    if is_a_new_cluster
+      oar_resource_ids = phys_rsc_map["core"][:current_ids].map{|r| -1}
+    else
+      oar_resource_ids = cluster_resources.map{|r| r["id"]}.uniq
+      if oar_resource_ids != cluster_resources.sort_by {|r| [ r["cpu"], r["core"]] }.map{|r| r["id"]}
+        is_quirk_cluster = true
+      end
+    end
 
-        if node_properties['state'] == 'Dead'
-          # Do not log node skipping twice if we just did a diff
-          skipped_nodes << node_uid unless options[:diff]
-          next
-        end
+    phys_rsc_map.each do |physical_resource, variables|
+      # Try to fix a bad allocation of physical resources. There is two main cases:
+      #  case 1) We detect too many resources: it likely means than a rsc of another cluster has been mis-associated to
+      #   this cluster. A simple fix is to sort <RESOURCES> of the cluster according to their number of occurence in
+      #   the cluster's properties, and keep only the N <RESOURCES> that appears the most frequently, where N is equal
+      #   to node_count * count(RESOURCES)
+      #  case 2) We don't have enough RESOURCES: it likely means that a same rsc has been associated to different
+      #   properties, and that a "gap" should exist in RESOURCES IDs (.i.e some rsc IDs are available). We fill the
+      #   missing RESOURCES with a) available RESOURCES in the site, and then b) new RESOURCES
+
+      phys_rsc_ids = variables[:current_ids]
+      expected_phys_rsc_count = variables[:per_cluster_count]
+
+      if phys_rsc_ids.length != expected_phys_rsc_count
+        raise "#{physical_resource} has an unexpected number of resources (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count})"
+      end
 
-        # Create new nodes
-        if opt == 'ref' || properties['oar'][site_uid]['default'][node_uid].nil?
-          node_hash = global_hash['sites'][site_uid]['clusters'][cluster_uid]['nodes'][node_uid]
-          cmd << oarcmd_create_node(node_address, node_properties, node_hash)
-        end
+      variables[:current_ids] = phys_rsc_ids
+    end
 
-        # Update properties
-        unless node_properties.empty?
-          cmd << oarcmd_set_node_properties(node_address, node_properties)
-          cmd << oarcmd_separator
-        end
-        ssh_cmd += cmd if options[:update]
-        o.write(cmd.join('')) if options[:print]
-        cmd = []
+    # Some cluster (econome) have attributed resources according to the "alpha-numerical" order of nodes
+    # ([1, 11, 12, ..., 3] instead of [1, 2, 3, 4, ...]). Here we preserve to order of existing nodes of the cluster
+    if is_a_new_cluster
+      nodes_names = (1..node_count).map {|i| {:name => "#{cluster_name}-#{i}", :fqdn => "#{cluster_name}-#{i}.#{site_name}.grid5000.fr"}}
+    else
+      nodes_names = cluster_resources.map{|r| r["host"]}.map{|fqdn| {:fqdn => fqdn, :name => fqdn.split(".")[0]}}.uniq
+    end
+
+    ############################################
+    # Suite of (2-a): Iterate over nodes of the cluster. (rest: cpus, cores)
+    ############################################
+
+    (1..node_count).each do |node_num|
+
+      # node_index0 starts at 0
+      node_index0 = node_num -1
+
+      name = nodes_names[node_index0][:name]
+      fqdn = nodes_names[node_index0][:fqdn]
+
+      node_description = cluster_desc_from_input_files["nodes"][name]
+
+      node_description_default_properties = site_properties["default"][name]
+
+      # Detect GPU configuration of nodes
+      if node_description.key? "gpu_devices"
+        gpus = node_description["gpu_devices"]
+      else
+        gpus = []
       end
 
-      # Build and output disk commands
-      site_properties['disk'].each_filtered_node_uid(options[:clusters], options[:nodes]) do |key, disk_properties|
-        # As an example, key can be equal to 'grimoire-1' for default resources or
-        # ['grimoire-1', 'sdb.grimoire-1'] for disk resources (disk sdb of grimoire-1)
-        node_uid, disk = key
-        host = [node_uid, site_uid, 'grid5000.fr'].join('.')
+      # Assign to each GPU of a node, a "local_id" property which is between 0 and "gpu_count_per_node". This 'local_id'
+      # property will be used to assign a unique local gpuset to each GPU.
+      gpu_idx = 0
+      gpus.map do |v|
+        v[1]['local_id'] = gpu_idx
+        gpu_idx += 1
+      end
 
-        next if skipped_nodes.include?(node_uid)
+      if cpuset_mapping == 'continuous'
+        cpuset = 0
+      end
 
-        # Create a new disk
-        if opt == 'ref' || properties['oar'][site_uid]['disk'][key].nil?
-          cmd << oarcmd_create_disk(host, disk)
-        end
+      generated_node_description = {
+        :name => name,
+        :fqdn => fqdn,
+        :cluster_name => cluster_name,
+        :site_name => site_name,
+        :description => node_description,
+        :oar_rows => [],
+        :disks => [],
+        :gpus => gpus,
+        :default_description => node_description_default_properties
+      }
+
+      ############################################
+      # Suite of (2-a): Iterate over CPUs of the server. (rest: cores)
+      ############################################
+      (1..phys_rsc_map["cpu"][:per_server_count]).each do |cpu_num|
+
+        # cpu_index0 starts at 0
+        cpu_index0 = cpu_num - 1
 
-        # Update the disk properties
-        unless disk_properties.empty?
-          cmd << oarcmd_set_disk_properties(host, disk, disk_properties)
-          cmd << oarcmd_separator
+        ############################################
+        # (2-c) [if cluster with GPU] detects the existing mapping GPU <-> CPU in the cluster
+        ############################################
+        numa_gpus = []
+        if node_description.key? "gpu_devices"
+          numa_gpus = node_description["gpu_devices"].map {|v| v[1]}.select {|v| v['cpu_affinity'] == cpu_index0}
         end
 
-        ssh_cmd += cmd if options[:update]
-        o.write(cmd.join('')) if options[:print]
-        cmd = []
-      end
-      o.close
+        ############################################
+        # Suite of (2-a): Iterate over CORES of the CPU
+        ############################################
+        (1..phys_rsc_map["core"][:per_server_count]).each do |core_num|
+
+          # core_index0 starts at 0
+          core_index0 = core_num - 1
+
+          # Compute cpu and core ID
+          oar_resource_id = oar_resource_ids[core_idx]
+          if not is_quirk_cluster
+            cpu_id = phys_rsc_map["cpu"][:current_ids][cpu_idx]
+            core_id = phys_rsc_map["core"][:current_ids][core_idx]
+          else
+            current_resource = cluster_resources.select{|r| r["id"] == oar_resource_id}[0]
+            cpu_id = current_resource["cpu"]
+            core_id = current_resource["core"]
+          end
+
+          # Prepare an Hash that represents a single OAR resource. Few
+          # keys are initialized with empty values.
+          row = {
+            :cluster => cluster_name,
+            :host => name,
+            :cpu => cpu_id,
+            :core => core_id,
+            :cpuset => nil,
+            :gpu => nil,
+            :gpudevice => nil,
+            :gpudevicepath => nil,
+            :cpumodel => nil,
+            :gpumodel => nil,
+            :oar_properties => nil,
+            :fqdn => fqdn,
+            :resource_id => oar_resource_id,
+          }
+
+          ############################################
+          # (2-d) Associate a cpuset to each core
+          ############################################
+          if cpuset_mapping == 'continuous'
+            row[:cpuset] = cpuset
+          else
+            # CPUSETs starts at 0
+            row[:cpuset] = cpu_index0 + core_index0 * phys_rsc_map["cpu"][:per_server_count]
+          end
+
+          row[:cpumodel] = cpu_model
+
+          ############################################
+          # (2-e) [if cluster with GPU] Associate a gpuset to each core
+          ############################################
+          if not numa_gpus.empty?
+            if gpuset_mapping == 'continuous'
+              gpu_idx = core_index0 / (phys_rsc_map["core"][:per_server_count] / numa_gpus.length)
+            else
+              gpu_idx = core_index0 % numa_gpus.length
+            end
+
+            selected_gpu = numa_gpus[gpu_idx]
+            if selected_gpu.nil?
+              next
+            end
 
-      # Execute commands
-      if options[:update]
-        printf 'Apply changes to the OAR server ' + options[:ssh][:host].gsub('%s', site_uid) + ' ? (y/N) '
-        prompt = STDIN.gets.chomp
-        ssh_exec(ssh_cmd, options, site_uid) if prompt.downcase == 'y'
+            row[:gpu] = phys_rsc_map["gpu"][:current_ids][node_index0 * phys_rsc_map["gpu"][:per_server_count] + selected_gpu['local_id']]
+            row[:gpudevice] = selected_gpu['local_id']
+            row[:gpudevicepath] = selected_gpu['device']
+            row[:gpumodel] = selected_gpu['model']
+          end
+
+          core_idx += 1
+
+          if cpuset_mapping == 'continuous'
+            cpuset += 1
+          end
+
+          generated_node_description[:oar_rows].push(row)
+        end
+        cpu_idx += 1
       end
-    end # site loop
 
-    if skipped_nodes.any?
-      puts "Skipped retired nodes: #{skipped_nodes}" unless options[:diff]
+      generated_hierarchy[:nodes].push(generated_node_description)
     end
-  end # if options[:print] || options[:update]
+  end
+  return generated_hierarchy
+end
+
+############################################
+# MAIN function
+############################################
+
+# This function is called from RAKE and is in charge of
+#   - printing OAR commands to
+#      > add a new cluster
+#      > update and existing cluster
+#   - execute these commands on an OAR server
+
+def generate_oar_properties(options)
+
+  options[:api] ||= {}
+  conf = RefRepo::Utils.get_api_config
+  options[:api][:user] = conf['username']
+  options[:api][:pwd] = conf['password']
+  options[:api][:uri] = conf['uri']
+  options[:ssh] ||= {}
+  options[:ssh][:user] ||= 'g5kadmin'
+  options[:ssh][:host] ||= 'oar.%s.g5kadmin'
+  options[:sites] = [options[:site]] # for compatibility with other generators
+
+  ############################################
+  # Fetch:
+  # 1) hierarchy from YAML files
+  # 2) generated data from load_data_hierarchy
+  # 3) oar properties from the reference repository
+  ############################################
+
+  data_hierarchy = load_data_hierarchy
+
+  site_name = options[:site]
+
+  # If no cluster is given, then the clusters are the cluster of the given site
+  if not options.key? :clusters or options[:clusters].length == 0
+    if data_hierarchy['sites'].key? site_name
+      clusters = data_hierarchy['sites'][site_name]['clusters'].keys
+      options[:clusters] = clusters
+    else
+      raise("The provided site does not exist : I can't detect clusters")
+    end
+  else
+    clusters = options[:clusters]
+  end
+
+
+  site_properties = get_oar_properties_from_the_ref_repo(data_hierarchy, {
+      :sites => [site_name]
+  })[site_name]
+
+  ############################################
+  # Generate information about the clusters
+  ############################################
+
+  generated_hierarchy = extract_clusters_description(clusters,
+                                                     site_name,
+                                                     options,
+                                                     data_hierarchy,
+                                                     site_properties)
+
+  ############################################
+  # Output generated information
+  ############################################
+
+  # DO=table
+  if options.key? :table and options[:table]
+    export_rows_as_formated_line(generated_hierarchy)
+  end
+
+  # DO=print
+  if options.key? :print and options[:print]
+    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy)
+    puts(cmds)
+  end
+
+  # Do=Diff
+  if options.key? :diff and options[:diff]
+    do_diff(options, generated_hierarchy, data_hierarchy)
+  end
+
+  # Do=update
+  if options[:update]
+    printf 'Apply changes to the OAR server ' + options[:ssh][:host].gsub('%s', site_name) + ' ? (y/N) '
+    prompt = STDIN.gets.chomp
+    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy)
+    run_commands_via_ssh(cmds, options) if prompt.downcase == 'y'
+  end
 
-  return ret
+  return 0
 end
diff --git a/scripts/nvidia-numa-mapper.rb b/scripts/nvidia-numa-mapper.rb
new file mode 100755
index 00000000000..1472eb835e5
--- /dev/null
+++ b/scripts/nvidia-numa-mapper.rb
@@ -0,0 +1,71 @@
+#!/usr/bin/env ruby
+require 'open3'
+require 'json'
+
+NVIDIA_DRIVER_MAJOR_MODE = 195
+
+def detect_numa_node(complete_pci_bus_id)
+  cmd = "cat /sys/class/pci_bus/" + complete_pci_bus_id + "/device/numa_node "
+  numa_node = nil
+  Open3.popen2(cmd) do |stdin, stdout, wait_thr|
+    stdout.each do | line |
+      numa_node = line.strip
+    end
+  end
+  return numa_node
+end
+
+def detect_gpu_file_device(minor_number)
+  cmd = "ls -lha /dev/nvidia*"
+  device_file_path = nil
+  Open3.popen2(cmd) do |stdin, stdout, wait_thr|
+    stdout.each do | line |
+      if line =~ /#{NVIDIA_DRIVER_MAJOR_MODE},\s+#{minor_number}/
+        device_file_path = /\/dev.*/.match(line).to_s
+      end
+    end
+  end
+  return device_file_path
+end
+
+def fetch_nvdia_cards_info()
+  cmd = "nvidia-smi -q"
+  result = []
+  Open3.popen2(cmd) do |stdin, stdout, wait_thr|
+    minor_number = nil
+    complete_pci_bus_id = nil
+
+    stdout.each do |line|
+      if line.include? "Minor Number"
+        minor_number = line.split(":")[1].strip
+      elsif line.include? "Bus Id"
+        line_parts = line.split(":").map(&lambda {|x| x.strip})
+        prefix_bus = line_parts[1].strip
+        if prefix_bus.to_i == 0
+          prefix_bus = "0000"
+        end
+
+        bus_id = line_parts[2].strip
+        complete_pci_bus_id = prefix_bus + ":" + bus_id
+      end
+
+      if not minor_number.nil? and not complete_pci_bus_id.nil?
+        numa_node = detect_numa_node(complete_pci_bus_id)
+        gpu_file_device = detect_gpu_file_device(minor_number)
+        gpu_info = {
+            :minor_number => minor_number,
+            :complete_pci_bus_id => complete_pci_bus_id,
+            :numa_node => numa_node,
+            :gpu_file_device => gpu_file_device
+        }
+        result.push(gpu_info)
+        minor_number = nil
+        complete_pci_bus_id = nil
+      end
+    end
+  end
+  return result
+end
+
+cards_info = fetch_nvdia_cards_info()
+puts cards_info.to_json
diff --git a/tests/oar_properties_spec.rb b/tests/oar_properties_spec.rb
new file mode 100644
index 00000000000..776dd10cb1a
--- /dev/null
+++ b/tests/oar_properties_spec.rb
@@ -0,0 +1,450 @@
+require 'rspec'
+require 'webmock/rspec'
+
+$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../lib')))
+require 'refrepo'
+require 'refrepo/gen/oar-properties'
+
+WebMock.disable_net_connect!(allow_localhost: true)
+
+conf = RefRepo::Utils.get_api_config
+
+def load_stub_file_content(stub_filename)
+  if not File.exist?("stub_oar_properties/#{stub_filename}")
+    raise("Cannot find #{stub_filename} in 'stub_oar_properties/'")
+  end
+  file = File.open("stub_oar_properties/#{stub_filename}", "r")
+  lines = IO.read(file)
+  file.close()
+  return lines
+end
+
+# This code comes from https://gist.github.com/herrphon/2d2ebbf23c86a10aa955
+# and enables to capture all output made on stdout and stderr by a block of code
+def capture(&block)
+  begin
+    $stdout = StringIO.new
+    $stderr = StringIO.new
+    yield
+    result = {}
+    result[:stdout] = $stdout.string
+    result[:stderr] = $stderr.string
+  ensure
+    $stdout = STDOUT
+    $stderr = STDERR
+  end
+  result
+end
+
+stubbed_addresses = [
+    "#{conf["uri"]}",
+    "#{conf["uri"]}/oarapi/resources/details.json?limit=999999",
+]
+
+
+def str_block_to_regexp(str)
+  str1 = str.gsub("|", "\\\\|")
+  str2 = str1.gsub("+", "\\\\+")
+  return Regexp.new str2
+end
+
+describe 'Oar properties generator' do
+
+  context 'interracting with an empty OAR server' do
+    before do
+      stubbed_api_response = load_stub_file_content("dump_oar_api_empty_server.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
+      def load_data_hierarchy
+        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data.json")
+        return JSON.parse(json_str)
+      end
+    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' -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' -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' -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' -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' -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' -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' -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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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 !
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+TXT
+
+      expected_clustera2_diff = <<-TXT
+  clustera-2: new node !
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "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
+      stubbed_api_response = load_stub_file_content("dump_oar_api_configured_server.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
+      def load_data_hierarchy
+        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data.json")
+        return JSON.parse(json_str)
+      end
+    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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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)
+    end
+  end
+end
\ No newline at end of file
diff --git a/tests/stub_oar_properties/dump_oar_api_configured_server.json b/tests/stub_oar_properties/dump_oar_api_configured_server.json
new file mode 100644
index 00000000000..0d7ee55d893
--- /dev/null
+++ b/tests/stub_oar_properties/dump_oar_api_configured_server.json
@@ -0,0 +1,2446 @@
+{
+   "offset" : 0,
+   "api_timestamp" : 1568902577,
+   "items" : [
+      {
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive",
+         "gpu" : 1,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "cpuset" : 0,
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/1"
+            },
+            {
+               "href" : "//oarapi/resources/1/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "production" : "YES",
+         "type" : "default",
+         "opa_count" : 0,
+         "id" : 1,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 0,
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "drain" : "NO",
+         "cpu" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "core" : 1,
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO"
+      },
+      {
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "id" : 2,
+         "opa_count" : 0,
+         "type" : "default",
+         "production" : "YES",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/2",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "href" : "//oarapi/resources/2/jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 1,
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "gpu" : 1,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "core" : 2,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpu" : 1,
+         "drain" : "NO",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "gpudevice" : 0,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE"
+      },
+      {
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "myri_count" : 0,
+         "core" : 3,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 1,
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "gpudevice" : 0,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "cpuset" : 2,
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/3"
+            },
+            {
+               "title" : "jobs",
+               "href" : "//oarapi/resources/3/jobs",
+               "rel" : "collection"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "opa_count" : 0,
+         "id" : 3,
+         "type" : "default",
+         "production" : "YES",
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 1,
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "cpucore" : 8,
+         "scheduler_priority" : 0
+      },
+      {
+         "cpu" : 1,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "ip" : "172.16.64.1",
+         "myri_count" : 0,
+         "core" : 4,
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 0,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "next_state" : "UnChanged",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/4",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/4/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 3,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "id" : 4,
+         "opa_count" : 0,
+         "production" : "YES",
+         "type" : "default",
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 1,
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive"
+      },
+      {
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "type" : "default",
+         "production" : "YES",
+         "opa_count" : 0,
+         "id" : 5,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/5"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/5/jobs"
+            }
+         ],
+         "cpuset" : 4,
+         "available_upto" : 2147483647,
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "gpu" : 2,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "core" : 5,
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "memcpu" : 65536,
+         "drain" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 1,
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "maintenance" : "NO",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpudevice" : 1,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr"
+      },
+      {
+         "opa_count" : 0,
+         "id" : 6,
+         "type" : "default",
+         "production" : "YES",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/6",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/6/jobs"
+            }
+         ],
+         "cpuset" : 5,
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 2,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpu" : 1,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "core" : 6,
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "gpudevice" : 1,
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0
+      },
+      {
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "gpu" : 2,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/7",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/7/jobs"
+            }
+         ],
+         "cpuset" : 6,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "opa_count" : 0,
+         "id" : 7,
+         "production" : "YES",
+         "type" : "default",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "gpudevice" : 1,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "next_state" : "UnChanged",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "myri_count" : 0,
+         "core" : 7,
+         "ip" : "172.16.64.1",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "cpu" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "deploy" : "NO"
+      },
+      {
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 2,
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive",
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "id" : 8,
+         "opa_count" : 0,
+         "production" : "YES",
+         "type" : "default",
+         "available_upto" : 2147483647,
+         "cpuset" : 7,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/8",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/8/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "next_state" : "UnChanged",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 1,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "memcpu" : 65536,
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "cpu" : 1,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "drain" : "NO",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "core" : 8,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1"
+      },
+      {
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive",
+         "gpu" : 3,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/9"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/9/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cpuset" : 8,
+         "production" : "YES",
+         "type" : "default",
+         "id" : 9,
+         "opa_count" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "gpudevice" : 2,
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "drain" : "NO",
+         "cpu" : 2,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "myri_count" : 0,
+         "core" : 9,
+         "ip" : "172.16.64.1",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO"
+      },
+      {
+         "drain" : "NO",
+         "cpu" : 2,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "myri_count" : 0,
+         "core" : 10,
+         "ip" : "172.16.64.1",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "gpudevice" : 2,
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/10",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/10/jobs"
+            }
+         ],
+         "cpuset" : 9,
+         "production" : "YES",
+         "type" : "default",
+         "id" : 10,
+         "opa_count" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "gpu" : 3
+      },
+      {
+         "cpu" : 2,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "core" : 11,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "gpudevice" : 2,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "next_state" : "UnChanged",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "available_upto" : 2147483647,
+         "cpuset" : 10,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/11",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "href" : "//oarapi/resources/11/jobs",
+               "rel" : "collection"
+            }
+         ],
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "id" : 11,
+         "opa_count" : 0,
+         "production" : "YES",
+         "type" : "default",
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 3,
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive"
+      },
+      {
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 2,
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "drain" : "NO",
+         "cpu" : 2,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "core" : 12,
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "gpu" : 3,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "production" : "YES",
+         "type" : "default",
+         "opa_count" : 0,
+         "id" : 12,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/12",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/12/jobs"
+            }
+         ],
+         "cpuset" : 11,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072
+      },
+      {
+         "core" : 13,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "suspended_jobs" : "NO",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "drain" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 2,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "memcpu" : 65536,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpudevice" : 3,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "cpuset" : 12,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/13"
+            },
+            {
+               "href" : "//oarapi/resources/13/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "type" : "default",
+         "production" : "YES",
+         "id" : 13,
+         "opa_count" : 0,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "gpu" : 4,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577
+      },
+      {
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive",
+         "gpu" : 4,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "cpuset" : 13,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/14"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/14/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "production" : "YES",
+         "type" : "default",
+         "id" : 14,
+         "opa_count" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 3,
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "drain" : "NO",
+         "cpu" : 2,
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "core" : 14,
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO"
+      },
+      {
+         "memcpu" : 65536,
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "cpu" : 2,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "drain" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "suspended_jobs" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "myri_count" : 0,
+         "core" : 15,
+         "ip" : "172.16.64.1",
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "next_state" : "UnChanged",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "gpudevice" : 3,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "opa_count" : 0,
+         "id" : 15,
+         "production" : "YES",
+         "type" : "default",
+         "available_upto" : 2147483647,
+         "cpuset" : 14,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/15"
+            },
+            {
+               "href" : "//oarapi/resources/15/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 4,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0
+      },
+      {
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 4,
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "cpuset" : 15,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/16",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/16/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "opa_count" : 0,
+         "id" : 16,
+         "type" : "default",
+         "production" : "YES",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "gpudevice" : 3,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-1.fakesite.grid5000.fr",
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 2,
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "myri_count" : 0,
+         "ip" : "172.16.64.1",
+         "core" : 16,
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "network_address" : "clustera-1.fakesite.grid5000.fr",
+         "state_num" : 1
+      },
+      {
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 0,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "next_state" : "UnChanged",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "cpu" : 3,
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "myri_count" : 0,
+         "core" : 17,
+         "ip" : "172.16.64.2",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "suspended_jobs" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "gpu" : 5,
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive",
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/17",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "href" : "//oarapi/resources/17/jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 0,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "opa_count" : 0,
+         "id" : 17,
+         "production" : "YES",
+         "type" : "default",
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO"
+      },
+      {
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "core" : 18,
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "cpu" : 3,
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "gpudevice" : 0,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "next_state" : "UnChanged",
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "available_upto" : 2147483647,
+         "cpuset" : 1,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/18",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/18/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "opa_count" : 0,
+         "id" : 18,
+         "production" : "YES",
+         "type" : "default",
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 5,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0
+      },
+      {
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "type" : "default",
+         "production" : "YES",
+         "opa_count" : 0,
+         "id" : 19,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "cpuset" : 2,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/19"
+            },
+            {
+               "href" : "//oarapi/resources/19/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "gpu" : 5,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "core" : 19,
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "memcpu" : 65536,
+         "drain" : "NO",
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpu" : 3,
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "maintenance" : "NO",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpudevice" : 0,
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64"
+      },
+      {
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "gpu" : 5,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "type" : "default",
+         "production" : "YES",
+         "id" : 20,
+         "opa_count" : 0,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/20"
+            },
+            {
+               "href" : "//oarapi/resources/20/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 3,
+         "available_upto" : 2147483647,
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpudevice" : 0,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "myri_count" : 0,
+         "core" : 20,
+         "ip" : "172.16.64.2",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "memcpu" : 65536,
+         "drain" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 3
+      },
+      {
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "gpudevice" : 1,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 3,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "myri_count" : 0,
+         "core" : 21,
+         "ip" : "172.16.64.2",
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 6,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "id" : 21,
+         "type" : "default",
+         "production" : "YES",
+         "cpuset" : 4,
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/21"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/21/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0
+      },
+      {
+         "opa_count" : 0,
+         "id" : 22,
+         "type" : "default",
+         "production" : "YES",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/22"
+            },
+            {
+               "title" : "jobs",
+               "href" : "//oarapi/resources/22/jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 5,
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 6,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpu" : 3,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "core" : 22,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "gpudevice" : 1,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0
+      },
+      {
+         "gpudevice" : 1,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 3,
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "ip" : "172.16.64.2",
+         "myri_count" : 0,
+         "core" : 23,
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 6,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/23"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/23/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cpuset" : 6,
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "id" : 23,
+         "opa_count" : 0,
+         "type" : "default",
+         "production" : "YES",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO"
+      },
+      {
+         "mic" : "NO",
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 1,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "next_state" : "UnChanged",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "core" : 24,
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "suspended_jobs" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "cpu" : 3,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "drain" : "NO",
+         "memcpu" : 65536,
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : 6,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/24",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/24/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cpuset" : 7,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "opa_count" : 0,
+         "id" : 24,
+         "production" : "YES",
+         "type" : "default"
+      },
+      {
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpudevice" : 2,
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "next_state" : "UnChanged",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "drain" : "NO",
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpu" : 4,
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "memcpu" : 65536,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "core" : 25,
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "gpu" : 7,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/25",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/25/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 8,
+         "available_upto" : 2147483647,
+         "type" : "default",
+         "production" : "YES",
+         "opa_count" : 0,
+         "id" : 25,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0
+      },
+      {
+         "id" : 26,
+         "opa_count" : 0,
+         "type" : "default",
+         "production" : "YES",
+         "cpuset" : 9,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/26",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/26/jobs"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 7,
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 4,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "core" : 26,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "gpudevice" : 2,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0
+      },
+      {
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/27"
+            },
+            {
+               "href" : "//oarapi/resources/27/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 10,
+         "available_upto" : 2147483647,
+         "type" : "default",
+         "production" : "YES",
+         "opa_count" : 0,
+         "id" : 27,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "gpu" : 7,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "core" : 27,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "suspended_jobs" : "NO",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "drain" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 4,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "memcpu" : 65536,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "gpudevice" : 2,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO"
+      },
+      {
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "gpudevice" : 2,
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "drain" : "NO",
+         "cpu" : 4,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "suspended_jobs" : "NO",
+         "core" : 28,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "gpu" : 7,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "production" : "YES",
+         "type" : "default",
+         "opa_count" : 0,
+         "id" : 28,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/28",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/28/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cpuset" : 11,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072
+      },
+      {
+         "drain" : "NO",
+         "cpu" : 4,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "core" : 29,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "myri" : "NO",
+         "max_walltime" : 86400,
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "suspended_jobs" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "gpudevice" : 3,
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/29"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/29/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cpuset" : 12,
+         "production" : "YES",
+         "type" : "default",
+         "id" : 29,
+         "opa_count" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "cluster" : "clustera",
+         "state" : "Alive",
+         "gpu" : 8
+      },
+      {
+         "gpu" : 8,
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "id" : 30,
+         "opa_count" : 0,
+         "type" : "default",
+         "production" : "YES",
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/30"
+            },
+            {
+               "title" : "jobs",
+               "href" : "//oarapi/resources/30/jobs",
+               "rel" : "collection"
+            }
+         ],
+         "cpuset" : 13,
+         "available_upto" : 2147483647,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "eth_count" : 1,
+         "switch" : "gw-fakesite",
+         "mic" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "gpudevice" : 3,
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "suspended_jobs" : "NO",
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "myri_count" : 0,
+         "core" : 30,
+         "ip" : "172.16.64.2",
+         "memcpu" : 65536,
+         "deploy" : "NO",
+         "memcore" : 8192,
+         "cpufreq" : "2.1",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 4,
+         "drain" : "NO"
+      },
+      {
+         "drain" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "virtual" : "ivt",
+         "cpu" : 4,
+         "deploy" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "memcpu" : 65536,
+         "myri_count" : 0,
+         "ip" : "172.16.64.2",
+         "core" : 31,
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "state_num" : 1,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "disk_reservation_count" : 0,
+         "ib" : "NO",
+         "next_finaud_decision" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpudevice" : 3,
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "cpuarch" : "x86_64",
+         "next_state" : "UnChanged",
+         "gpu_count" : 4,
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_count" : 0,
+         "mic" : "NO",
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "ib_rate" : 0,
+         "besteffort" : "YES",
+         "cpuset" : 14,
+         "links" : [
+            {
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/31"
+            },
+            {
+               "href" : "//oarapi/resources/31/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "available_upto" : 2147483647,
+         "type" : "default",
+         "production" : "YES",
+         "opa_count" : 0,
+         "id" : 31,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "desktop_computing" : "NO",
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "cpucore" : 8,
+         "scheduler_priority" : 0,
+         "myri_rate" : 0,
+         "api_timestamp" : 1568902577,
+         "expiry_date" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state" : "Alive",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "gpu" : 8
+      },
+      {
+         "switch" : "gw-fakesite",
+         "eth_count" : 1,
+         "ib_count" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "next_finaud_decision" : "NO",
+         "cpuarch" : "x86_64",
+         "host" : "clustera-2.fakesite.grid5000.fr",
+         "gpudevice" : 3,
+         "network_address" : "clustera-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "ib" : "NO",
+         "disk_reservation_count" : 0,
+         "suspended_jobs" : "NO",
+         "myri_count" : 0,
+         "core" : 32,
+         "ip" : "172.16.64.2",
+         "max_walltime" : 86400,
+         "myri" : "NO",
+         "cpufreq" : "2.1",
+         "memcore" : 8192,
+         "deploy" : "NO",
+         "memcpu" : 65536,
+         "drain" : "NO",
+         "cpu" : 4,
+         "virtual" : "ivt",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clustera",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "gpu" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "expiry_date" : 0,
+         "scheduler_priority" : 0,
+         "cpucore" : 8,
+         "api_timestamp" : 1568902577,
+         "myri_rate" : 0,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "last_job_date" : 0,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "memnode" : 131072,
+         "production" : "YES",
+         "type" : "default",
+         "opa_count" : 0,
+         "id" : 32,
+         "besteffort" : "YES",
+         "ib_rate" : 0,
+         "available_upto" : 2147483647,
+         "cpuset" : 15,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/32",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/32/jobs",
+               "title" : "jobs"
+            }
+         ]
+      }
+   ],
+   "total" : 32,
+   "links" : [
+      {
+         "href" : "//oarapi/resources/details.json?limit=999999&offset=0",
+         "rel" : "self"
+      }
+   ]
+}
+
diff --git a/tests/stub_oar_properties/dump_oar_api_empty_server.json b/tests/stub_oar_properties/dump_oar_api_empty_server.json
new file mode 100644
index 00000000000..315507912cc
--- /dev/null
+++ b/tests/stub_oar_properties/dump_oar_api_empty_server.json
@@ -0,0 +1,7 @@
+{
+   "links" : [],
+   "total" : 0,
+   "items" : [],
+   "offset" : 0
+}
+
diff --git a/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json b/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json
new file mode 100644
index 00000000000..ecfee859326
--- /dev/null
+++ b/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json
@@ -0,0 +1 @@
+{"sites":{"fakesite":{"clusters":{"clustera":{"nodes":{"clustera-1":{"architecture":{"nb_cores":16,"nb_procs":2,"nb_threads":32,"platform_type":"x86_64"},"bios":{"release_date":"06/14/2019","vendor":"Dell Inc.","version":"2.2.11"},"chassis":{"manufacturer":"Dell Inc.","name":"PowerEdge T640","serial":"FL1CBX2"},"cpuset_mapping":"continuous","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"},"bios":{"release_date":"06/14/2019","vendor":"Dell Inc.","version":"2.2.11"},"chassis":{"manufacturer":"Dell Inc.","name":"PowerEdge T640","serial":"9L1CBX2"},"cpuset_mapping":"continuous","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/mediawiki/index.php/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"}
-- 
GitLab


From f05516522d983eea9a243edda867f7420bb7c320 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sun, 22 Sep 2019 18:12:19 +0200
Subject: [PATCH 02/57] Add support for running tests from anywhere, not just
 tests/

---
 tests/oar_properties_spec.rb | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/tests/oar_properties_spec.rb b/tests/oar_properties_spec.rb
index 776dd10cb1a..ad1bffd5317 100644
--- a/tests/oar_properties_spec.rb
+++ b/tests/oar_properties_spec.rb
@@ -5,15 +5,17 @@ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../lib'))
 require 'refrepo'
 require 'refrepo/gen/oar-properties'
 
+STUBDIR = File.expand_path(File.dirname(__FILE__))
+
 WebMock.disable_net_connect!(allow_localhost: true)
 
 conf = RefRepo::Utils.get_api_config
 
 def load_stub_file_content(stub_filename)
-  if not File.exist?("stub_oar_properties/#{stub_filename}")
-    raise("Cannot find #{stub_filename} in 'stub_oar_properties/'")
+  if not File.exist?("#{STUBDIR}/stub_oar_properties/#{stub_filename}")
+    raise("Cannot find #{stub_filename} in '#{STUBDIR}/stub_oar_properties/'")
   end
-  file = File.open("stub_oar_properties/#{stub_filename}", "r")
+  file = File.open("#{STUBDIR}/stub_oar_properties/#{stub_filename}", "r")
   lines = IO.read(file)
   file.close()
   return lines
-- 
GitLab


From eab62e5a97f3aa1827fb5078e63a76908c2e51bc Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sun, 22 Sep 2019 18:13:11 +0200
Subject: [PATCH 03/57] Add a spec_helper file that loads simplecov to output a
 coverage report

---
 .gitignore                   | 1 +
 Gemfile                      | 3 ++-
 Gemfile.lock                 | 7 +++++++
 tests/oar_properties_spec.rb | 2 ++
 tests/spec_helper.rb         | 9 +++++++++
 5 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 tests/spec_helper.rb

diff --git a/.gitignore b/.gitignore
index 288e369e8c2..2d1063449ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ bundle
 .bundle
 vendor
 /tmp
+coverage
diff --git a/Gemfile b/Gemfile
index c6da111ccad..5487076341c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -10,4 +10,5 @@ gem "ruby-cute", :require => "cute"
 gem "peach"
 gem "restfully"
 gem "rspec"
-gem "webmock"
\ No newline at end of file
+gem "webmock"
+gem "simplecov"
diff --git a/Gemfile.lock b/Gemfile.lock
index f821a002ad9..b92256af24d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -10,6 +10,7 @@ GEM
     diff-lcs (1.3)
     diffy (3.3.0)
     dns-zone (0.3.1)
+    docile (1.3.2)
     domain_name (0.5.20190701)
       unf (>= 0.0.5, < 1.0.0)
     faraday (0.15.4)
@@ -93,6 +94,11 @@ GEM
       net-ssh-multi (>= 1.2)
       rest-client (>= 1.6)
     safe_yaml (1.0.5)
+    simplecov (0.17.1)
+      docile (~> 1.1)
+      json (>= 1.8, < 3)
+      simplecov-html (~> 0.10.0)
+    simplecov-html (0.10.2)
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.7.6)
@@ -115,4 +121,5 @@ DEPENDENCIES
   restfully
   rspec
   ruby-cute
+  simplecov
   webmock
diff --git a/tests/oar_properties_spec.rb b/tests/oar_properties_spec.rb
index ad1bffd5317..0039cb79a1f 100644
--- a/tests/oar_properties_spec.rb
+++ b/tests/oar_properties_spec.rb
@@ -1,3 +1,5 @@
+$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
+require 'spec_helper'
 require 'rspec'
 require 'webmock/rspec'
 
diff --git a/tests/spec_helper.rb b/tests/spec_helper.rb
new file mode 100644
index 00000000000..f0876afe762
--- /dev/null
+++ b/tests/spec_helper.rb
@@ -0,0 +1,9 @@
+require 'simplecov'
+
+SimpleCov.start do
+  add_filter '/tests/'
+  add_filter '/bundle/'
+end
+# This outputs the report to your public folder
+# You will want to add this to .gitignore
+SimpleCov.coverage_dir 'coverage'
-- 
GitLab


From 517ccd7f66b8d9dc80c63a89d7b198673d207337 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 26 Sep 2019 14:30:37 +0200
Subject: [PATCH 04/57] implement a spec test that tests the oar property
 generator on a fake cluster with disks

---
 tests/oar_properties_spec.rb                  |  509 +-
 .../dump_oar_api_configured_server.json       | 4886 ++++++++---------
 ...p_oar_api_configured_server_with_disk.json | 2978 ++++++++++
 .../dump_oar_api_empty_server.json            |    8 +-
 .../load_data_hierarchy_stubbed_data.json     |  816 ++-
 ...data_hierarchy_stubbed_data_with_disk.json | 1527 ++++++
 6 files changed, 8275 insertions(+), 2449 deletions(-)
 create mode 100644 tests/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
 create mode 100644 tests/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json

diff --git a/tests/oar_properties_spec.rb b/tests/oar_properties_spec.rb
index 0039cb79a1f..bd766e41b25 100644
--- a/tests/oar_properties_spec.rb
+++ b/tests/oar_properties_spec.rb
@@ -451,4 +451,511 @@ TXT
       expect(generator_output[:stdout]).to include(expected_clustera2_diff)
     end
   end
-end
\ No newline at end of file
+
+  context 'interracting with an empty OAR server (cluster with disk)' do
+    before do
+      stubbed_api_response = load_stub_file_content("dump_oar_api_empty_server.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
+      def load_data_hierarchy
+        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data_with_disk.json")
+        return JSON.parse(json_str)
+      end
+    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)
+    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' -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' -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' -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' -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' -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' -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' -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' -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' -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' -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' -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' -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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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 cluster='clusterb' -p host='clusterb-2.fakesite.grid5000.fr' -p available_upto=0 -p deploy='YES' -p production='YES' -p maintenance='NO' -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 !
+    ["+", "cluster", "clusterb"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 3]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", nil]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+      TXT
+
+      expected_clusterb2_diff = <<-TXT
+  clusterb-2: new node !
+    ["+", "cluster", "clusterb"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 3]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "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]
+    ["+", "cluster", "clusterb"]
+    ["+", "cpuset", -1]
+    ["+", "deploy", "YES"]
+    ["+", "disk", "sdb.clusterb-1"]
+    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0"]
+    ["+", "host", "clusterb-1.fakesite.grid5000.fr"]
+    ["+", "maintenance", "NO"]
+    ["+", "network_address", ""]
+    ["+", "production", "YES"]
+  ["clusterb-1", "sdc.clusterb-1"]: new disk !
+    ["+", "available_upto", 0]
+    ["+", "cluster", "clusterb"]
+    ["+", "cpuset", -1]
+    ["+", "deploy", "YES"]
+    ["+", "disk", "sdc.clusterb-1"]
+    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0"]
+    ["+", "host", "clusterb-1.fakesite.grid5000.fr"]
+    ["+", "maintenance", "NO"]
+    ["+", "network_address", ""]
+    ["+", "production", "YES"]
+  ["clusterb-1", "sdd.clusterb-1"]: new disk !
+    ["+", "available_upto", 0]
+    ["+", "cluster", "clusterb"]
+    ["+", "cpuset", -1]
+    ["+", "deploy", "YES"]
+    ["+", "disk", "sdd.clusterb-1"]
+    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0"]
+    ["+", "host", "clusterb-1.fakesite.grid5000.fr"]
+    ["+", "maintenance", "NO"]
+    ["+", "network_address", ""]
+    ["+", "production", "YES"]
+  ["clusterb-2", "sdb.clusterb-2"]: new disk !
+    ["+", "available_upto", 0]
+    ["+", "cluster", "clusterb"]
+    ["+", "cpuset", -1]
+    ["+", "deploy", "YES"]
+    ["+", "disk", "sdb.clusterb-2"]
+    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0"]
+    ["+", "host", "clusterb-2.fakesite.grid5000.fr"]
+    ["+", "maintenance", "NO"]
+    ["+", "network_address", ""]
+    ["+", "production", "YES"]
+  ["clusterb-2", "sdc.clusterb-2"]: new disk !
+    ["+", "available_upto", 0]
+    ["+", "cluster", "clusterb"]
+    ["+", "cpuset", -1]
+    ["+", "deploy", "YES"]
+    ["+", "disk", "sdc.clusterb-2"]
+    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0"]
+    ["+", "host", "clusterb-2.fakesite.grid5000.fr"]
+    ["+", "maintenance", "NO"]
+    ["+", "network_address", ""]
+    ["+", "production", "YES"]
+  ["clusterb-2", "sdd.clusterb-2"]: new disk !
+    ["+", "available_upto", 0]
+    ["+", "cluster", "clusterb"]
+    ["+", "cpuset", -1]
+    ["+", "deploy", "YES"]
+    ["+", "disk", "sdd.clusterb-2"]
+    ["+", "diskpath", "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0"]
+    ["+", "host", "clusterb-2.fakesite.grid5000.fr"]
+    ["+", "maintenance", "NO"]
+    ["+", "network_address", ""]
+    ["+", "production", "YES"]
+      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)
+    end
+  end
+
+
+
+  context 'OAR server with data' do
+    before do
+      stubbed_api_response = load_stub_file_content("dump_oar_api_configured_server_with_disk.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
+      def load_data_hierarchy
+        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data_with_disk.json")
+        return JSON.parse(json_str)
+      end
+    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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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)
+    end
+  end
+end
diff --git a/tests/stub_oar_properties/dump_oar_api_configured_server.json b/tests/stub_oar_properties/dump_oar_api_configured_server.json
index 0d7ee55d893..7905b91ef6f 100644
--- a/tests/stub_oar_properties/dump_oar_api_configured_server.json
+++ b/tests/stub_oar_properties/dump_oar_api_configured_server.json
@@ -1,2446 +1,2446 @@
 {
-   "offset" : 0,
-   "api_timestamp" : 1568902577,
-   "items" : [
-      {
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive",
-         "gpu" : 1,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "cpuset" : 0,
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/1"
-            },
-            {
-               "href" : "//oarapi/resources/1/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "production" : "YES",
-         "type" : "default",
-         "opa_count" : 0,
-         "id" : 1,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 0,
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "drain" : "NO",
-         "cpu" : 1,
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "core" : 1,
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO"
-      },
-      {
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "id" : 2,
-         "opa_count" : 0,
-         "type" : "default",
-         "production" : "YES",
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/2",
-               "rel" : "self"
-            },
-            {
-               "title" : "jobs",
-               "href" : "//oarapi/resources/2/jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 1,
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "gpu" : 1,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "core" : 2,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cpu" : 1,
-         "drain" : "NO",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "gpudevice" : 0,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE"
-      },
-      {
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "myri_count" : 0,
-         "core" : 3,
-         "ip" : "172.16.64.1",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 1,
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "gpudevice" : 0,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "cpuset" : 2,
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/3"
-            },
-            {
-               "title" : "jobs",
-               "href" : "//oarapi/resources/3/jobs",
-               "rel" : "collection"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "opa_count" : 0,
-         "id" : 3,
-         "type" : "default",
-         "production" : "YES",
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 1,
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "cpucore" : 8,
-         "scheduler_priority" : 0
-      },
-      {
-         "cpu" : 1,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "deploy" : "NO",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "ip" : "172.16.64.1",
-         "myri_count" : 0,
-         "core" : 4,
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 0,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "next_state" : "UnChanged",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "href" : "//oarapi/resources/4",
-               "rel" : "self"
-            },
-            {
-               "href" : "//oarapi/resources/4/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 3,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "id" : 4,
-         "opa_count" : 0,
-         "production" : "YES",
-         "type" : "default",
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 1,
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive"
-      },
-      {
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "type" : "default",
-         "production" : "YES",
-         "opa_count" : 0,
-         "id" : 5,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/5"
-            },
-            {
-               "rel" : "collection",
-               "title" : "jobs",
-               "href" : "//oarapi/resources/5/jobs"
-            }
-         ],
-         "cpuset" : 4,
-         "available_upto" : 2147483647,
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "gpu" : 2,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "suspended_jobs" : "NO",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "core" : 5,
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "memcpu" : 65536,
-         "drain" : "NO",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 1,
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "next_state" : "UnChanged",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "maintenance" : "NO",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "gpudevice" : 1,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr"
-      },
-      {
-         "opa_count" : 0,
-         "id" : 6,
-         "type" : "default",
-         "production" : "YES",
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "href" : "//oarapi/resources/6",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "title" : "jobs",
-               "href" : "//oarapi/resources/6/jobs"
-            }
-         ],
-         "cpuset" : 5,
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "gpu" : 2,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cpu" : 1,
-         "drain" : "NO",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "core" : 6,
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "gpudevice" : 1,
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0
-      },
-      {
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "gpu" : 2,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/7",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "title" : "jobs",
-               "href" : "//oarapi/resources/7/jobs"
-            }
-         ],
-         "cpuset" : 6,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "opa_count" : 0,
-         "id" : 7,
-         "production" : "YES",
-         "type" : "default",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "gpudevice" : 1,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "next_state" : "UnChanged",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "myri_count" : 0,
-         "core" : 7,
-         "ip" : "172.16.64.1",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "suspended_jobs" : "NO",
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "cpu" : 1,
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "deploy" : "NO"
-      },
-      {
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "gpu" : 2,
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive",
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "id" : 8,
-         "opa_count" : 0,
-         "production" : "YES",
-         "type" : "default",
-         "available_upto" : 2147483647,
-         "cpuset" : 7,
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "href" : "//oarapi/resources/8",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/8/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "last_job_date" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "next_state" : "UnChanged",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 1,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "memcpu" : 65536,
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "cpu" : 1,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "drain" : "NO",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "core" : 8,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1"
-      },
-      {
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive",
-         "gpu" : 3,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/9"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/9/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "cpuset" : 8,
-         "production" : "YES",
-         "type" : "default",
-         "id" : 9,
-         "opa_count" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "gpudevice" : 2,
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "drain" : "NO",
-         "cpu" : 2,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "myri_count" : 0,
-         "core" : 9,
-         "ip" : "172.16.64.1",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO"
-      },
-      {
-         "drain" : "NO",
-         "cpu" : 2,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "myri_count" : 0,
-         "core" : 10,
-         "ip" : "172.16.64.1",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "gpudevice" : 2,
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node",
-               "rel" : "member"
-            },
-            {
-               "href" : "//oarapi/resources/10",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "title" : "jobs",
-               "href" : "//oarapi/resources/10/jobs"
-            }
-         ],
-         "cpuset" : 9,
-         "production" : "YES",
-         "type" : "default",
-         "id" : 10,
-         "opa_count" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "gpu" : 3
-      },
-      {
-         "cpu" : 2,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "core" : 11,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "gpudevice" : 2,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "next_state" : "UnChanged",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "available_upto" : 2147483647,
-         "cpuset" : 10,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/11",
-               "rel" : "self"
-            },
-            {
-               "title" : "jobs",
-               "href" : "//oarapi/resources/11/jobs",
-               "rel" : "collection"
-            }
-         ],
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "id" : 11,
-         "opa_count" : 0,
-         "production" : "YES",
-         "type" : "default",
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 3,
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive"
-      },
-      {
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 2,
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "drain" : "NO",
-         "cpu" : 2,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "core" : 12,
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "gpu" : 3,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "production" : "YES",
-         "type" : "default",
-         "opa_count" : 0,
-         "id" : 12,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node",
-               "rel" : "member"
-            },
-            {
-               "href" : "//oarapi/resources/12",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "title" : "jobs",
-               "href" : "//oarapi/resources/12/jobs"
-            }
-         ],
-         "cpuset" : 11,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072
-      },
-      {
-         "core" : 13,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "suspended_jobs" : "NO",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "drain" : "NO",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 2,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "memcpu" : 65536,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "gpudevice" : 3,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "next_state" : "UnChanged",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "cpuset" : 12,
-         "links" : [
-            {
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
-               "title" : "node",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/13"
-            },
-            {
-               "href" : "//oarapi/resources/13/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "type" : "default",
-         "production" : "YES",
-         "id" : 13,
-         "opa_count" : 0,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "gpu" : 4,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577
-      },
-      {
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive",
-         "gpu" : 4,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "cpuset" : 13,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/14"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/14/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "production" : "YES",
-         "type" : "default",
-         "id" : 14,
-         "opa_count" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 3,
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "drain" : "NO",
-         "cpu" : 2,
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "core" : 14,
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO"
-      },
-      {
-         "memcpu" : 65536,
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "cpu" : 2,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "drain" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "suspended_jobs" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "myri_count" : 0,
-         "core" : 15,
-         "ip" : "172.16.64.1",
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "next_state" : "UnChanged",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "gpudevice" : 3,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "opa_count" : 0,
-         "id" : 15,
-         "production" : "YES",
-         "type" : "default",
-         "available_upto" : 2147483647,
-         "cpuset" : 14,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/15"
-            },
-            {
-               "href" : "//oarapi/resources/15/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "last_job_date" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "gpu" : 4,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0
-      },
-      {
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 4,
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "cpuset" : 15,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/16",
-               "rel" : "self"
-            },
-            {
-               "href" : "//oarapi/resources/16/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "opa_count" : 0,
-         "id" : 16,
-         "type" : "default",
-         "production" : "YES",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "gpudevice" : 3,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-1.fakesite.grid5000.fr",
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 2,
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "myri_count" : 0,
-         "ip" : "172.16.64.1",
-         "core" : 16,
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "network_address" : "clustera-1.fakesite.grid5000.fr",
-         "state_num" : 1
-      },
-      {
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 0,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "next_state" : "UnChanged",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "cpu" : 3,
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "myri_count" : 0,
-         "core" : 17,
-         "ip" : "172.16.64.2",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "suspended_jobs" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "gpu" : 5,
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive",
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "href" : "//oarapi/resources/17",
-               "rel" : "self"
-            },
-            {
-               "title" : "jobs",
-               "href" : "//oarapi/resources/17/jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 0,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "opa_count" : 0,
-         "id" : 17,
-         "production" : "YES",
-         "type" : "default",
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO"
-      },
-      {
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "core" : 18,
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "cpu" : 3,
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "gpudevice" : 0,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "next_state" : "UnChanged",
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "available_upto" : 2147483647,
-         "cpuset" : 1,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/18",
-               "rel" : "self"
-            },
-            {
-               "href" : "//oarapi/resources/18/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "opa_count" : 0,
-         "id" : 18,
-         "production" : "YES",
-         "type" : "default",
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 5,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0
-      },
-      {
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "type" : "default",
-         "production" : "YES",
-         "opa_count" : 0,
-         "id" : 19,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "cpuset" : 2,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/19"
-            },
-            {
-               "href" : "//oarapi/resources/19/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "gpu" : 5,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "core" : 19,
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "memcpu" : 65536,
-         "drain" : "NO",
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cpu" : 3,
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "next_state" : "UnChanged",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "maintenance" : "NO",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "gpudevice" : 0,
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64"
-      },
-      {
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "gpu" : 5,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "type" : "default",
-         "production" : "YES",
-         "id" : 20,
-         "opa_count" : 0,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/20"
-            },
-            {
-               "href" : "//oarapi/resources/20/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 3,
-         "available_upto" : 2147483647,
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "next_state" : "UnChanged",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "gpudevice" : 0,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "myri_count" : 0,
-         "core" : 20,
-         "ip" : "172.16.64.2",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "memcpu" : 65536,
-         "drain" : "NO",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 3
-      },
-      {
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "gpudevice" : 1,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 3,
-         "drain" : "NO",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "myri_count" : 0,
-         "core" : 21,
-         "ip" : "172.16.64.2",
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "gpu" : 6,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "opa_count" : 0,
-         "id" : 21,
-         "type" : "default",
-         "production" : "YES",
-         "cpuset" : 4,
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/21"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/21/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "last_job_date" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0
-      },
-      {
-         "opa_count" : 0,
-         "id" : 22,
-         "type" : "default",
-         "production" : "YES",
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/22"
-            },
-            {
-               "title" : "jobs",
-               "href" : "//oarapi/resources/22/jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 5,
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "gpu" : 6,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cpu" : 3,
-         "drain" : "NO",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "core" : 22,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "gpudevice" : 1,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0
-      },
-      {
-         "gpudevice" : 1,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 3,
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "ip" : "172.16.64.2",
-         "myri_count" : 0,
-         "core" : 23,
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 6,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/23"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/23/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "cpuset" : 6,
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "id" : 23,
-         "opa_count" : 0,
-         "type" : "default",
-         "production" : "YES",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO"
-      },
-      {
-         "mic" : "NO",
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 1,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "maintenance" : "NO",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "next_state" : "UnChanged",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "core" : 24,
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "suspended_jobs" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "cpu" : 3,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "drain" : "NO",
-         "memcpu" : 65536,
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "deploy" : "NO",
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "gpu" : 6,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "opa_rate" : 0,
-         "last_job_date" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/24",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/24/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "cpuset" : 7,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "opa_count" : 0,
-         "id" : 24,
-         "production" : "YES",
-         "type" : "default"
-      },
-      {
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "gpudevice" : 2,
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "next_state" : "UnChanged",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "drain" : "NO",
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cpu" : 4,
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "memcpu" : 65536,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "core" : 25,
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "gpu" : 7,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/25",
-               "rel" : "self"
-            },
-            {
-               "href" : "//oarapi/resources/25/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 8,
-         "available_upto" : 2147483647,
-         "type" : "default",
-         "production" : "YES",
-         "opa_count" : 0,
-         "id" : 25,
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0
-      },
-      {
-         "id" : 26,
-         "opa_count" : 0,
-         "type" : "default",
-         "production" : "YES",
-         "cpuset" : 9,
-         "links" : [
-            {
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "title" : "node",
-               "rel" : "member"
-            },
-            {
-               "href" : "//oarapi/resources/26",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "title" : "jobs",
-               "href" : "//oarapi/resources/26/jobs"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "last_job_date" : 0,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "gpu" : 7,
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 4,
-         "drain" : "NO",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "core" : 26,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "gpudevice" : 2,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0
-      },
-      {
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/27"
-            },
-            {
-               "href" : "//oarapi/resources/27/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 10,
-         "available_upto" : 2147483647,
-         "type" : "default",
-         "production" : "YES",
-         "opa_count" : 0,
-         "id" : 27,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "state" : "Alive",
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "gpu" : 7,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "core" : 27,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "suspended_jobs" : "NO",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "drain" : "NO",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 4,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "memcpu" : 65536,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "gpudevice" : 2,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "next_state" : "UnChanged",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO"
-      },
-      {
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "gpudevice" : 2,
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "drain" : "NO",
-         "cpu" : 4,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "suspended_jobs" : "NO",
-         "core" : 28,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "gpu" : 7,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "production" : "YES",
-         "type" : "default",
-         "opa_count" : 0,
-         "id" : 28,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "rel" : "member",
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
-            },
-            {
-               "href" : "//oarapi/resources/28",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/28/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "cpuset" : 11,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072
-      },
-      {
-         "drain" : "NO",
-         "cpu" : 4,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "core" : 29,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "myri" : "NO",
-         "max_walltime" : 86400,
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "suspended_jobs" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "gpudevice" : 3,
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/29"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/29/jobs",
-               "title" : "jobs"
-            }
-         ],
-         "cpuset" : 12,
-         "production" : "YES",
-         "type" : "default",
-         "id" : 29,
-         "opa_count" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "disktype" : "SATA",
-         "cluster" : "clustera",
-         "state" : "Alive",
-         "gpu" : 8
-      },
-      {
-         "gpu" : 8,
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "last_available_upto" : 0,
-         "finaud_decision" : "NO",
-         "last_job_date" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "opa_rate" : 0,
-         "id" : 30,
-         "opa_count" : 0,
-         "type" : "default",
-         "production" : "YES",
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/30"
-            },
-            {
-               "title" : "jobs",
-               "href" : "//oarapi/resources/30/jobs",
-               "rel" : "collection"
-            }
-         ],
-         "cpuset" : 13,
-         "available_upto" : 2147483647,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "eth_count" : 1,
-         "switch" : "gw-fakesite",
-         "mic" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "next_state" : "UnChanged",
-         "gpudevice" : 3,
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "suspended_jobs" : "NO",
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "myri_count" : 0,
-         "core" : 30,
-         "ip" : "172.16.64.2",
-         "memcpu" : 65536,
-         "deploy" : "NO",
-         "memcore" : 8192,
-         "cpufreq" : "2.1",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 4,
-         "drain" : "NO"
-      },
-      {
-         "drain" : "NO",
-         "cputype" : "Intel Xeon Silver 4110",
-         "virtual" : "ivt",
-         "cpu" : 4,
-         "deploy" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "memcpu" : 65536,
-         "myri_count" : 0,
-         "ip" : "172.16.64.2",
-         "core" : 31,
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "state_num" : 1,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "suspended_jobs" : "NO",
-         "disk_reservation_count" : 0,
-         "ib" : "NO",
-         "next_finaud_decision" : "NO",
-         "wattmeter" : "MULTIPLE",
-         "gpudevice" : 3,
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "cpuarch" : "x86_64",
-         "next_state" : "UnChanged",
-         "gpu_count" : 4,
-         "cluster_priority" : 201906,
-         "maintenance" : "NO",
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "ib_count" : 0,
-         "mic" : "NO",
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "ib_rate" : 0,
-         "besteffort" : "YES",
-         "cpuset" : 14,
-         "links" : [
-            {
-               "title" : "node",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "rel" : "member"
-            },
-            {
-               "rel" : "self",
-               "href" : "//oarapi/resources/31"
-            },
-            {
-               "href" : "//oarapi/resources/31/jobs",
-               "title" : "jobs",
-               "rel" : "collection"
-            }
-         ],
-         "available_upto" : 2147483647,
-         "type" : "default",
-         "production" : "YES",
-         "opa_count" : 0,
-         "id" : 31,
-         "opa_rate" : 0,
-         "memnode" : 131072,
-         "desktop_computing" : "NO",
-         "eth_rate" : 10,
-         "opa" : "NO",
-         "last_job_date" : 0,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "cpucore" : 8,
-         "scheduler_priority" : 0,
-         "myri_rate" : 0,
-         "api_timestamp" : 1568902577,
-         "expiry_date" : 0,
-         "nodemodel" : "Dell PowerEdge T640",
-         "state" : "Alive",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "gpu" : 8
-      },
-      {
-         "switch" : "gw-fakesite",
-         "eth_count" : 1,
-         "ib_count" : 0,
-         "gpu_model" : "GeForce RTX 2080 Ti",
-         "mic" : "NO",
-         "next_state" : "UnChanged",
-         "maintenance" : "NO",
-         "cluster_priority" : 201906,
-         "gpu_count" : 4,
-         "wattmeter" : "MULTIPLE",
-         "next_finaud_decision" : "NO",
-         "cpuarch" : "x86_64",
-         "host" : "clustera-2.fakesite.grid5000.fr",
-         "gpudevice" : 3,
-         "network_address" : "clustera-2.fakesite.grid5000.fr",
-         "state_num" : 1,
-         "ib" : "NO",
-         "disk_reservation_count" : 0,
-         "suspended_jobs" : "NO",
-         "myri_count" : 0,
-         "core" : 32,
-         "ip" : "172.16.64.2",
-         "max_walltime" : 86400,
-         "myri" : "NO",
-         "cpufreq" : "2.1",
-         "memcore" : 8192,
-         "deploy" : "NO",
-         "memcpu" : 65536,
-         "drain" : "NO",
-         "cpu" : 4,
-         "virtual" : "ivt",
-         "cputype" : "Intel Xeon Silver 4110",
-         "cluster" : "clustera",
-         "disktype" : "SATA",
-         "state" : "Alive",
-         "gpu" : 8,
-         "nodemodel" : "Dell PowerEdge T640",
-         "expiry_date" : 0,
-         "scheduler_priority" : 0,
-         "cpucore" : 8,
-         "api_timestamp" : 1568902577,
-         "myri_rate" : 0,
-         "finaud_decision" : "NO",
-         "last_available_upto" : 0,
-         "opa" : "NO",
-         "eth_rate" : 10,
-         "last_job_date" : 0,
-         "opa_rate" : 0,
-         "desktop_computing" : "NO",
-         "memnode" : 131072,
-         "production" : "YES",
-         "type" : "default",
-         "opa_count" : 0,
-         "id" : 32,
-         "besteffort" : "YES",
-         "ib_rate" : 0,
-         "available_upto" : 2147483647,
-         "cpuset" : 15,
-         "links" : [
-            {
-               "rel" : "member",
-               "href" : "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
-               "title" : "node"
-            },
-            {
-               "href" : "//oarapi/resources/32",
-               "rel" : "self"
-            },
-            {
-               "rel" : "collection",
-               "href" : "//oarapi/resources/32/jobs",
-               "title" : "jobs"
-            }
-         ]
-      }
-   ],
-   "total" : 32,
-   "links" : [
-      {
-         "href" : "//oarapi/resources/details.json?limit=999999&offset=0",
-         "rel" : "self"
-      }
-   ]
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
 }
 
diff --git a/tests/stub_oar_properties/dump_oar_api_configured_server_with_disk.json b/tests/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
new file mode 100644
index 00000000000..64e765c3fbd
--- /dev/null
+++ b/tests/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
@@ -0,0 +1,2978 @@
+{
+   "api_timestamp" : 1569497994,
+   "offset" : 0,
+   "total" : 38,
+   "items" : [
+      {
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/1",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/1/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "gpu" : 1,
+         "finaud_decision" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "id" : 1,
+         "cluster" : "clusterb",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "besteffort" : "YES",
+         "core" : 1,
+         "myri" : "NO",
+         "opa" : "NO"
+      },
+      {
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/2",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/2/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "core" : 2,
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "deploy" : "NO",
+         "cpucore" : 8,
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 1,
+         "suspended_jobs" : "NO",
+         "id" : 2,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0
+      },
+      {
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "id" : 3,
+         "cluster" : "clusterb",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "cpuset" : 2,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 3,
+         "myri" : "NO",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 1,
+         "finaud_decision" : "NO",
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 0,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/3"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/3/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO"
+      },
+      {
+         "finaud_decision" : "NO",
+         "gpu" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/4"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/4/jobs"
+            }
+         ],
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 4,
+         "besteffort" : "YES",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "id" : 4,
+         "cluster" : "clusterb",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "cpuset" : 3,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr"
+      },
+      {
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu" : 2,
+         "finaud_decision" : "NO",
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/5"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/5/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 5,
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "cpuarch" : "x86_64",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "id" : 5,
+         "cluster" : "clusterb",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 4,
+         "opa_count" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0
+      },
+      {
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "finaud_decision" : "NO",
+         "gpu" : 2,
+         "gpu_count" : 4,
+         "gpudevice" : 1,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/6"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/6/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "id" : 6,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 5,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 1,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 6,
+         "myri" : "NO"
+      },
+      {
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 7,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 6,
+         "suspended_jobs" : "NO",
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "cpu" : 1,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 7,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu" : 2,
+         "finaud_decision" : "NO",
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/7",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/7/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0
+      },
+      {
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "gpu" : 2,
+         "finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/8",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/8/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 8,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "last_job_date" : 0,
+         "cpucore" : 8,
+         "cpu" : 1,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "cpuset" : 7,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "opa" : "NO",
+         "core" : 8,
+         "myri" : "NO",
+         "besteffort" : "YES"
+      },
+      {
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 9,
+         "opa" : "NO",
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 8,
+         "opa_count" : 0,
+         "cpu" : 2,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 9,
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/9",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/9/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu" : 3,
+         "finaud_decision" : "NO",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO"
+      },
+      {
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "finaud_decision" : "NO",
+         "gpu" : 3,
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/10",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/10/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 10,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 10,
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "drain" : "NO",
+         "cpuset" : 9,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpu" : 2,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0
+      },
+      {
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/11"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/11/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "finaud_decision" : "NO",
+         "gpu" : 3,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 2,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "cpuset" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "id" : 11,
+         "cluster" : "clusterb",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "core" : 11,
+         "besteffort" : "YES",
+         "opa" : "NO"
+      },
+      {
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/12",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/12/jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu" : 3,
+         "finaud_decision" : "NO",
+         "cpuset" : 11,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 2,
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.1",
+         "cpuarch" : "x86_64",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 12,
+         "besteffort" : "YES",
+         "core" : 12,
+         "myri" : "NO",
+         "opa" : "NO"
+      },
+      {
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 4,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/13"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/13/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 13,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpu" : 2,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "cpuset" : 12,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 13,
+         "besteffort" : "YES"
+      },
+      {
+         "finaud_decision" : "NO",
+         "gpu" : 4,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/14"
+            },
+            {
+               "href" : "//oarapi/resources/14/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "opa" : "NO",
+         "core" : 14,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "cluster" : "clusterb",
+         "id" : 14,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 2,
+         "cpucore" : 8,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 13
+      },
+      {
+         "core" : 15,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 2,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 14,
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "id" : 15,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/15",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/15/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu" : 4,
+         "finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk_reservation_count" : 3,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "switch" : null,
+         "diskpath" : null,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "myri_rate" : 0,
+         "eth_count" : 1
+      },
+      {
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 16,
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "cluster" : "clusterb",
+         "id" : 16,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpu" : 2,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 15,
+         "gpu" : 4,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/16"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/16/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO"
+      },
+      {
+         "core" : null,
+         "myri" : null,
+         "besteffort" : "YES",
+         "opa" : null,
+         "myri_count" : null,
+         "cpu" : null,
+         "cpufreq" : null,
+         "cpucore" : null,
+         "deploy" : "YES",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "opa_count" : null,
+         "drain" : "NO",
+         "eth_rate" : null,
+         "cpuset" : -1,
+         "network_address" : "",
+         "suspended_jobs" : "NO",
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 17,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcore" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "opa_rate" : null,
+         "wattmeter" : null,
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/17"
+            },
+            {
+               "href" : "//oarapi/resources/17/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "api_timestamp" : 1569497994,
+         "memcpu" : null,
+         "gpudevice" : null,
+         "gpu_count" : null,
+         "finaud_decision" : "NO",
+         "gpu" : null,
+         "next_finaud_decision" : "NO",
+         "disk" : "sdb.clusterb-1",
+         "cputype" : null,
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "switch" : null,
+         "max_walltime" : null,
+         "production" : "YES",
+         "disk_reservation_count" : null,
+         "disktype" : null,
+         "mic" : null,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "ib" : null,
+         "state_num" : 1,
+         "myri_rate" : null,
+         "eth_count" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr"
+      },
+      {
+         "ib_rate" : null,
+         "gpu_model" : null,
+         "disk" : "sdc.clusterb-1",
+         "cputype" : null,
+         "next_finaud_decision" : "NO",
+         "gpu" : null,
+         "finaud_decision" : "NO",
+         "gpu_count" : null,
+         "gpudevice" : null,
+         "memcpu" : null,
+         "api_timestamp" : 1569497994,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/18"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/18/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "eth_count" : null,
+         "myri_rate" : null,
+         "state_num" : 1,
+         "ib" : null,
+         "type" : "disk",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : null,
+         "disktype" : null,
+         "disk_reservation_count" : null,
+         "max_walltime" : null,
+         "production" : "YES",
+         "switch" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "opa" : null,
+         "besteffort" : "YES",
+         "myri" : null,
+         "core" : null,
+         "opa_rate" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "memcore" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "cluster" : "clusterb",
+         "id" : 18,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "eth_rate" : null,
+         "cpuset" : -1,
+         "drain" : "NO",
+         "network_address" : "",
+         "suspended_jobs" : "NO",
+         "opa_count" : null,
+         "ib_count" : null,
+         "expiry_date" : 0,
+         "cpufreq" : null,
+         "myri_count" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "deploy" : "YES",
+         "last_job_date" : 0
+      },
+      {
+         "eth_rate" : null,
+         "drain" : "NO",
+         "network_address" : "",
+         "suspended_jobs" : "NO",
+         "cpuset" : -1,
+         "last_job_date" : 0,
+         "myri_count" : null,
+         "cpufreq" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "deploy" : "YES",
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "opa_count" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "opa_rate" : null,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 19,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcore" : null,
+         "besteffort" : "YES",
+         "myri" : null,
+         "core" : null,
+         "opa" : null,
+         "disktype" : null,
+         "mic" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "switch" : null,
+         "max_walltime" : null,
+         "production" : "YES",
+         "disk_reservation_count" : null,
+         "eth_count" : null,
+         "myri_rate" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "type" : "disk",
+         "ib" : null,
+         "state_num" : 1,
+         "api_timestamp" : 1569497994,
+         "memcpu" : null,
+         "gpudevice" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "href" : "//oarapi/resources/19",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/19/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "cputype" : null,
+         "disk" : "sdd.clusterb-1",
+         "next_finaud_decision" : "NO",
+         "ib_rate" : null,
+         "gpu_model" : null,
+         "finaud_decision" : "NO",
+         "gpu" : null
+      },
+      {
+         "besteffort" : "YES",
+         "core" : 17,
+         "myri" : "NO",
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "last_job_date" : 0,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "cluster" : "clusterb",
+         "id" : 20,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/20",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/20/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 5,
+         "finaud_decision" : "NO",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "diskpath" : null,
+         "switch" : null,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1
+      },
+      {
+         "besteffort" : "YES",
+         "core" : 18,
+         "myri" : "NO",
+         "opa" : "NO",
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 1,
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "id" : 21,
+         "cluster" : "clusterb",
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/21",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/21/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "finaud_decision" : "NO",
+         "gpu" : 5,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO"
+      },
+      {
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 19,
+         "besteffort" : "YES",
+         "ip" : "172.16.64.2",
+         "cpuarch" : "x86_64",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 22,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "last_job_date" : 0,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 2,
+         "gpu" : 5,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/22",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/22/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "scheduler_priority" : 0
+      },
+      {
+         "diskpath" : null,
+         "switch" : null,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/23",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/23/jobs"
+            }
+         ],
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "finaud_decision" : "NO",
+         "gpu" : 5,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "cpu" : 3,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 3,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 23,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "core" : 20,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO"
+      },
+      {
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/24",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/24/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "gpu" : 6,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "switch" : null,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "core" : 21,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 4,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 24,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0
+      },
+      {
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "finaud_decision" : "NO",
+         "gpu" : 6,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/25",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/25/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 25,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 5,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 22,
+         "myri" : "NO"
+      },
+      {
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 23,
+         "myri" : "NO",
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "cluster" : "clusterb",
+         "id" : 26,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 6,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "last_job_date" : 0,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "opa_count" : 0,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 6,
+         "finaud_decision" : "NO",
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 1,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/26",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/26/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400
+      },
+      {
+         "gpu" : 6,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/27"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/27/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 1,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 24,
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "cluster" : "clusterb",
+         "id" : 27,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "last_job_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "cpuset" : 7,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO"
+      },
+      {
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 7,
+         "finaud_decision" : "NO",
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/28"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/28/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 25,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "id" : 28,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpu" : 4,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "opa_count" : 0
+      },
+      {
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 26,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "cluster" : "clusterb",
+         "id" : 29,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 9,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpucore" : 8,
+         "cpu" : 4,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 7,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/29"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/29/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400
+      },
+      {
+         "gpu" : 7,
+         "finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/30",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/30/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "opa" : "NO",
+         "core" : 27,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "id" : 30,
+         "cluster" : "clusterb",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 4,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "opa_count" : 0,
+         "eth_rate" : 10,
+         "cpuset" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO"
+      },
+      {
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/31"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/31/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "finaud_decision" : "NO",
+         "gpu" : 7,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "core" : 28,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "opa_count" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "cpu" : 4,
+         "cpucore" : 8,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 11,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "cluster" : "clusterb",
+         "id" : 31,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072
+      },
+      {
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/32"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/32/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpu" : 8,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa_count" : 0,
+         "cpu" : 4,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "cpuset" : 12,
+         "suspended_jobs" : "NO",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 32,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "core" : 29,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO"
+      },
+      {
+         "finaud_decision" : "NO",
+         "gpu" : 8,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/33"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/33/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65536,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATA",
+         "mic" : "NO",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 30,
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "cluster" : "clusterb",
+         "id" : 33,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "cpu" : 4,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "cpuset" : 13,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO"
+      },
+      {
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 34,
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 14,
+         "opa_count" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "last_job_date" : 0,
+         "cpucore" : 8,
+         "cpu" : 4,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 31,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu" : 8,
+         "finaud_decision" : "NO",
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/34",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/34/jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0
+      },
+      {
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 32,
+         "myri" : "NO",
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "id" : 35,
+         "cluster" : "clusterb",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 15,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 4,
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "gpu" : 8,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65536,
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/35",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/35/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "mic" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3
+      },
+      {
+         "state_num" : 1,
+         "type" : "disk",
+         "ib" : null,
+         "myri_rate" : null,
+         "eth_count" : null,
+         "next_state" : "UnChanged",
+         "nodemodel" : null,
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "max_walltime" : null,
+         "production" : "YES",
+         "disk_reservation_count" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "switch" : null,
+         "disktype" : null,
+         "mic" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "finaud_decision" : "NO",
+         "gpu" : null,
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "disk" : "sdb.clusterb-2",
+         "cputype" : null,
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/36"
+            },
+            {
+               "href" : "//oarapi/resources/36/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "wattmeter" : null,
+         "last_available_upto" : 0,
+         "gpudevice" : null,
+         "gpu_count" : null,
+         "api_timestamp" : 1569497994,
+         "memcpu" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcore" : null,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "id" : 36,
+         "cluster" : "clusterb",
+         "opa_rate" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "opa_count" : null,
+         "myri_count" : null,
+         "last_job_date" : 0,
+         "cpufreq" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "deploy" : "YES",
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "suspended_jobs" : "NO",
+         "eth_rate" : null,
+         "drain" : "NO",
+         "network_address" : "",
+         "cpuset" : -1,
+         "opa" : null,
+         "myri" : null,
+         "core" : null,
+         "besteffort" : "YES"
+      },
+      {
+         "besteffort" : "YES",
+         "core" : null,
+         "myri" : null,
+         "opa" : null,
+         "eth_rate" : null,
+         "network_address" : "",
+         "drain" : "NO",
+         "cpuset" : -1,
+         "suspended_jobs" : "NO",
+         "ib_count" : null,
+         "expiry_date" : 0,
+         "cpufreq" : null,
+         "myri_count" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "last_job_date" : 0,
+         "deploy" : "YES",
+         "opa_count" : null,
+         "available_upto" : 0,
+         "memnode" : null,
+         "opa_rate" : null,
+         "id" : 37,
+         "cluster" : "clusterb",
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "memcore" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcpu" : null,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : null,
+         "gpudevice" : null,
+         "last_available_upto" : 0,
+         "wattmeter" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/37"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/37/jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "maintenance" : "NO",
+         "disk" : "sdc.clusterb-2",
+         "cputype" : null,
+         "next_finaud_decision" : "NO",
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "finaud_decision" : "NO",
+         "gpu" : null,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : null,
+         "mic" : null,
+         "switch" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "disk_reservation_count" : null,
+         "production" : "YES",
+         "max_walltime" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : null,
+         "myri_rate" : null,
+         "eth_count" : null,
+         "ib" : null,
+         "type" : "disk",
+         "state_num" : 1
+      },
+      {
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "next_finaud_decision" : "NO",
+         "disk" : "sdd.clusterb-2",
+         "cputype" : null,
+         "gpu" : null,
+         "finaud_decision" : "NO",
+         "gpu_count" : null,
+         "gpudevice" : null,
+         "memcpu" : null,
+         "api_timestamp" : 1569497994,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/38"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/38/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "eth_count" : null,
+         "myri_rate" : null,
+         "state_num" : 1,
+         "ib" : null,
+         "type" : "disk",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : null,
+         "disktype" : null,
+         "disk_reservation_count" : null,
+         "production" : "YES",
+         "max_walltime" : null,
+         "switch" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "opa" : null,
+         "besteffort" : "YES",
+         "core" : null,
+         "myri" : null,
+         "opa_rate" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "memcore" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "cluster" : "clusterb",
+         "id" : 38,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "",
+         "eth_rate" : null,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : -1,
+         "opa_count" : null,
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "myri_count" : null,
+         "deploy" : "YES",
+         "cpufreq" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "last_job_date" : 0
+      }
+   ],
+   "links" : [
+      {
+         "rel" : "self",
+         "href" : "//oarapi/resources/details.json?limit=999999&offset=0"
+      }
+   ]
+}
+
diff --git a/tests/stub_oar_properties/dump_oar_api_empty_server.json b/tests/stub_oar_properties/dump_oar_api_empty_server.json
index 315507912cc..25cebf4d648 100644
--- a/tests/stub_oar_properties/dump_oar_api_empty_server.json
+++ b/tests/stub_oar_properties/dump_oar_api_empty_server.json
@@ -1,7 +1,7 @@
 {
-   "links" : [],
-   "total" : 0,
-   "items" : [],
-   "offset" : 0
+  "links": [],
+  "total": 0,
+  "items": [],
+  "offset": 0
 }
 
diff --git a/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json b/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json
index ecfee859326..4d2e2e5f805 100644
--- a/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json
+++ b/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json
@@ -1 +1,815 @@
-{"sites":{"fakesite":{"clusters":{"clustera":{"nodes":{"clustera-1":{"architecture":{"nb_cores":16,"nb_procs":2,"nb_threads":32,"platform_type":"x86_64"},"bios":{"release_date":"06/14/2019","vendor":"Dell Inc.","version":"2.2.11"},"chassis":{"manufacturer":"Dell Inc.","name":"PowerEdge T640","serial":"FL1CBX2"},"cpuset_mapping":"continuous","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"},"bios":{"release_date":"06/14/2019","vendor":"Dell Inc.","version":"2.2.11"},"chassis":{"manufacturer":"Dell Inc.","name":"PowerEdge T640","serial":"9L1CBX2"},"cpuset_mapping":"continuous","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/mediawiki/index.php/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"}
+{
+  "sites": {
+    "fakesite": {
+      "clusters": {
+        "clustera": {
+          "nodes": {
+            "clustera-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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/mediawiki/index.php/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"
+}
\ No newline at end of file
diff --git a/tests/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json b/tests/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
new file mode 100644
index 00000000000..4d67c8d2138
--- /dev/null
+++ b/tests/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
@@ -0,0 +1,1527 @@
+{
+  "sites": {
+    "fakesite": {
+      "clusters": {
+        "clustera": {
+          "nodes": {
+            "clustera-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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"
+        },
+        "clusterb": {
+          "nodes": {
+            "clusterb-2": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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": "clusterb-2.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterb-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": "clusterb-pdu1"
+                      },
+                      {
+                        "port": 6,
+                        "uid": "clusterb-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterb-2"
+            },
+            "clusterb-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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": "clusterb-1.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterb-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": "clusterb-pdu1"
+                      },
+                      {
+                        "port": 1,
+                        "uid": "clusterb-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterb-1"
+            }
+          },
+          "created_at": "Fri, 07 Jun 2019 00:00:00 GMT",
+          "kavlan": false,
+          "model": "Dell PowerEdge T640",
+          "queues": [
+            "admin",
+            "production"
+          ],
+          "type": "cluster",
+          "uid": "clusterb"
+        }
+      },
+      "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/mediawiki/index.php/Fakesite:Home"
+    }
+  },
+  "network_equipments": {
+    "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": {}
+    },
+    "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-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-paris": {
+      "kind": "virtual",
+      "linecards": [
+        {
+          "ports": [
+            {
+              "uid": "renater-lille"
+            },
+            {
+              "uid": "renater-lyon"
+            },
+            {
+              "uid": "renater-nancy"
+            }
+          ],
+          "rate": 10000000000
+        }
+      ],
+      "type": "network_equipment",
+      "uid": "renater-paris",
+      "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-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-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-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-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": {}
+    }
+  },
+  "type": "grid",
+  "uid": "grid5000"
+}
-- 
GitLab


From f92a5213ba57f369814de738aaf38c4d203770f8 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 27 Sep 2019 10:41:48 +0200
Subject: [PATCH 05/57] puts specs test in a spec folder; handle more stubbing
 URL

---
 {tests => spec}/oar_properties_spec.rb                           | 1 +
 {tests => spec}/spec_helper.rb                                   | 1 +
 .../stub_oar_properties/dump_oar_api_configured_server.json      | 0
 .../dump_oar_api_configured_server_with_disk.json                | 0
 .../stub_oar_properties/dump_oar_api_empty_server.json           | 0
 .../stub_oar_properties/load_data_hierarchy_stubbed_data.json    | 0
 .../load_data_hierarchy_stubbed_data_with_disk.json              | 0
 7 files changed, 2 insertions(+)
 rename {tests => spec}/oar_properties_spec.rb (99%)
 rename {tests => spec}/spec_helper.rb (90%)
 rename {tests => spec}/stub_oar_properties/dump_oar_api_configured_server.json (100%)
 rename {tests => spec}/stub_oar_properties/dump_oar_api_configured_server_with_disk.json (100%)
 rename {tests => spec}/stub_oar_properties/dump_oar_api_empty_server.json (100%)
 rename {tests => spec}/stub_oar_properties/load_data_hierarchy_stubbed_data.json (100%)
 rename {tests => spec}/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json (100%)

diff --git a/tests/oar_properties_spec.rb b/spec/oar_properties_spec.rb
similarity index 99%
rename from tests/oar_properties_spec.rb
rename to spec/oar_properties_spec.rb
index bd766e41b25..a1a75d3dd0a 100644
--- a/tests/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -43,6 +43,7 @@ end
 stubbed_addresses = [
     "#{conf["uri"]}",
     "#{conf["uri"]}/oarapi/resources/details.json?limit=999999",
+    "#{conf["uri"]}stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999",
 ]
 
 
diff --git a/tests/spec_helper.rb b/spec/spec_helper.rb
similarity index 90%
rename from tests/spec_helper.rb
rename to spec/spec_helper.rb
index f0876afe762..425ea3ea8e3 100644
--- a/tests/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -3,6 +3,7 @@ require 'simplecov'
 SimpleCov.start do
   add_filter '/tests/'
   add_filter '/bundle/'
+  add_filter '/spec/'
 end
 # This outputs the report to your public folder
 # You will want to add this to .gitignore
diff --git a/tests/stub_oar_properties/dump_oar_api_configured_server.json b/spec/stub_oar_properties/dump_oar_api_configured_server.json
similarity index 100%
rename from tests/stub_oar_properties/dump_oar_api_configured_server.json
rename to spec/stub_oar_properties/dump_oar_api_configured_server.json
diff --git a/tests/stub_oar_properties/dump_oar_api_configured_server_with_disk.json b/spec/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
similarity index 100%
rename from tests/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
rename to spec/stub_oar_properties/dump_oar_api_configured_server_with_disk.json
diff --git a/tests/stub_oar_properties/dump_oar_api_empty_server.json b/spec/stub_oar_properties/dump_oar_api_empty_server.json
similarity index 100%
rename from tests/stub_oar_properties/dump_oar_api_empty_server.json
rename to spec/stub_oar_properties/dump_oar_api_empty_server.json
diff --git a/tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
similarity index 100%
rename from tests/stub_oar_properties/load_data_hierarchy_stubbed_data.json
rename to spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
diff --git a/tests/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
similarity index 100%
rename from tests/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
rename to spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
-- 
GitLab


From 3a1e93044cc0d74b321305083c379ca0bf16ffda Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 05:34:56 +0200
Subject: [PATCH 06/57] Minor spec file improvements

---
 spec/oar_properties_spec.rb | 97 ++++++++++---------------------------
 1 file changed, 26 insertions(+), 71 deletions(-)

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index a1a75d3dd0a..5218e029023 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -17,10 +17,7 @@ def load_stub_file_content(stub_filename)
   if not File.exist?("#{STUBDIR}/stub_oar_properties/#{stub_filename}")
     raise("Cannot find #{stub_filename} in '#{STUBDIR}/stub_oar_properties/'")
   end
-  file = File.open("#{STUBDIR}/stub_oar_properties/#{stub_filename}", "r")
-  lines = IO.read(file)
-  file.close()
-  return lines
+  return IO.read("#{STUBDIR}/stub_oar_properties/#{stub_filename}")
 end
 
 # This code comes from https://gist.github.com/herrphon/2d2ebbf23c86a10aa955
@@ -40,12 +37,6 @@ def capture(&block)
   result
 end
 
-stubbed_addresses = [
-    "#{conf["uri"]}",
-    "#{conf["uri"]}/oarapi/resources/details.json?limit=999999",
-    "#{conf["uri"]}stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999",
-]
-
 
 def str_block_to_regexp(str)
   str1 = str.gsub("|", "\\\\|")
@@ -53,25 +44,31 @@ def str_block_to_regexp(str)
   return Regexp.new str2
 end
 
-describe 'Oar properties generator' do
+def prepare_stubs(oar_api, data_hierarchy)
+  conf = RefRepo::Utils.get_api_config
+  stubbed_addresses = [
+    "#{conf["uri"]}",
+    "#{conf["uri"]}stable/sites/fakesite/internal/oarapi/resources/details.json?limit=999999",
+  ]
+  stubbed_api_response = load_stub_file_content(oar_api)
+  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).and_return(JSON::parse(load_stub_file_content(data_hierarchy)))
+end
+
+describe 'OarProperties' do
 
   context 'interracting with an empty OAR server' do
     before do
-      stubbed_api_response = load_stub_file_content("dump_oar_api_empty_server.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
-      def load_data_hierarchy
-        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data.json")
-        return JSON.parse(json_str)
-      end
+      prepare_stubs("dump_oar_api_empty_server.json", "load_data_hierarchy_stubbed_data.json")
     end
 
     it 'should generate correctly a table of nodes' do
@@ -286,21 +283,7 @@ TXT
 
   context 'OAR server with data' do
     before do
-      stubbed_api_response = load_stub_file_content("dump_oar_api_configured_server.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
-      def load_data_hierarchy
-        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data.json")
-        return JSON.parse(json_str)
-      end
+      prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data.json")
     end
 
     it 'should generate correctly a table of nodes' do
@@ -455,21 +438,7 @@ TXT
 
   context 'interracting with an empty OAR server (cluster with disk)' do
     before do
-      stubbed_api_response = load_stub_file_content("dump_oar_api_empty_server.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
-      def load_data_hierarchy
-        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data_with_disk.json")
-        return JSON.parse(json_str)
-      end
+      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
@@ -772,21 +741,7 @@ TXT
 
   context 'OAR server with data' do
     before do
-      stubbed_api_response = load_stub_file_content("dump_oar_api_configured_server_with_disk.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
-      def load_data_hierarchy
-        json_str = load_stub_file_content("load_data_hierarchy_stubbed_data_with_disk.json")
-        return JSON.parse(json_str)
-      end
+      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
-- 
GitLab


From 2410e2485a7049632a9b2f90375079140e429ff8 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 05:42:23 +0200
Subject: [PATCH 07/57] Add mutant to dependencies

---
 Gemfile | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/Gemfile b/Gemfile
index 5487076341c..95bdaef9850 100644
--- a/Gemfile
+++ b/Gemfile
@@ -9,6 +9,7 @@ gem "dns-zone"
 gem "ruby-cute", :require => "cute"
 gem "peach"
 gem "restfully"
-gem "rspec"
-gem "webmock"
-gem "simplecov"
+gem "rspec", :group => [:development, :test]
+gem "webmock", :group => [:development, :test]
+gem "simplecov", :group => [:development, :test]
+gem "mutant-rspec", :group => [:development, :test]
-- 
GitLab


From dd5509c7fff51ac0ec0bfed6a36870c6317f602a Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:37:37 +0200
Subject: [PATCH 08/57] Introduce a OarProperties module. this is required for
 the Mutant gem

---
 lib/refrepo/gen/oar-properties.rb | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 7b0cd49098d..d006697b854 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -19,6 +19,8 @@ DEFAULT_GPUSET_MAPPING = "continuous"
 # Functions related to the "TABLE" operation
 ############################################
 
+module OarProperties
+
 def export_rows_as_formated_line(generated_hierarchy)
   # Display header
   puts "+#{'-' * 10} + #{'-' * 20} + #{'-' * 5} + #{'-' * 5} + #{'-' * 8} + #{'-' * 4} + #{'-' * 20} + #{'-' * 30} + #{'-' * 30}+"
@@ -1424,22 +1426,25 @@ def generate_oar_properties(options)
 
   # DO=print
   if options.key? :print and options[:print]
-    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy)
+    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, refrepo_properties[site_name], data_hierarchy)
     puts(cmds)
   end
 
   # Do=Diff
   if options.key? :diff and options[:diff]
-    do_diff(options, generated_hierarchy, data_hierarchy)
+    do_diff(options, generated_hierarchy, data_hierarchy, refrepo_properties)
   end
 
   # Do=update
   if options[:update]
     printf 'Apply changes to the OAR server ' + options[:ssh][:host].gsub('%s', site_name) + ' ? (y/N) '
     prompt = STDIN.gets.chomp
-    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy)
+    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, refrepo_properties[site_name], data_hierarchy)
     run_commands_via_ssh(cmds, options) if prompt.downcase == 'y'
   end
 
   return 0
 end
+
+end
+include OarProperties
-- 
GitLab


From 8a81a7d295a5f3e5798e2c6a7667f9eee677e2fa Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:38:06 +0200
Subject: [PATCH 09/57] Minor code improvement

---
 lib/refrepo/gen/oar-properties.rb | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index d006697b854..876ffbc174e 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -833,13 +833,14 @@ end
 # Get the properties of each node
 def get_oar_properties_from_the_ref_repo(global_hash, options)
   properties = {}
-  sites = options[:sites]
+  sites = options.fetch(:sites)
   sites.each do |site_uid|
-    properties[site_uid] = {}
-    properties[site_uid]['default'] = get_ref_default_properties(site_uid, global_hash['sites'][site_uid])
-    properties[site_uid]['disk'] = get_ref_disk_properties(site_uid, global_hash['sites'][site_uid])
+    properties[site_uid] = {
+      'default' => get_ref_default_properties(site_uid, global_hash.fetch('sites').fetch(site_uid)),
+      'disk' => get_ref_disk_properties(site_uid, global_hash.fetch('sites').fetch(site_uid))
+    }
   end
-  return properties
+  properties
 end
 
 def get_oar_properties_from_oar(options)
-- 
GitLab


From bb747e9396cab7b8eda89905af2ba4f90579d02d Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:38:30 +0200
Subject: [PATCH 10/57] Avoid calling get_oar_properties_from_the_ref_repo
 again in do_diff

---
 lib/refrepo/gen/oar-properties.rb | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 876ffbc174e..55d71cb1edc 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -856,13 +856,12 @@ def get_oar_properties_from_oar(options)
   return properties
 end
 
-def do_diff(options, generated_hierarchy, data_hierarchy)
+def do_diff(options, generated_hierarchy, global_hash, refrepo_properties)
 
-  # global_hash = load_data_hierarchy
-  global_hash = data_hierarchy
-  properties = {}
-  properties['ref'] = get_oar_properties_from_the_ref_repo(global_hash, options)
-  properties['oar'] = get_oar_properties_from_oar(options)
+  properties = {
+    'ref' => refrepo_properties,
+    'oar' => get_oar_properties_from_oar(options)
+  }
 
   # Get the list of property keys from the reference-repo (['ref'])
   properties_keys = {
@@ -1402,9 +1401,9 @@ def generate_oar_properties(options)
   end
 
 
-  site_properties = get_oar_properties_from_the_ref_repo(data_hierarchy, {
+  refrepo_properties = get_oar_properties_from_the_ref_repo(data_hierarchy, {
       :sites => [site_name]
-  })[site_name]
+  })
 
   ############################################
   # Generate information about the clusters
@@ -1414,7 +1413,7 @@ def generate_oar_properties(options)
                                                      site_name,
                                                      options,
                                                      data_hierarchy,
-                                                     site_properties)
+                                                     refrepo_properties[site_name])
 
   ############################################
   # Output generated information
-- 
GitLab


From b8fe50c71ec760c0bac0e0ab8cf6a118ddd41a1a Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:43:33 +0200
Subject: [PATCH 11/57] Remove ability to read/write oar properties using a
 file

This is not supported anymore in practice
---
 lib/refrepo/gen/oar-properties.rb | 69 +++++++++++++------------------
 1 file changed, 28 insertions(+), 41 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 55d71cb1edc..7a2499e504a 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -556,8 +556,8 @@ def get_ref_disk_properties_internal(site_uid, cluster_uid, node_uid, node)
   properties
 end
 
-def get_oar_default_properties(site_uid, filename, options)
-  oarnodes = get_oar_data(site_uid, filename, options)
+def get_oar_default_properties(site_uid, options)
+  oarnodes = get_oar_data(site_uid, options)
 
   # Handle the two possible input format from oarnodes -Y:
   # given by a file, and from the OAR API
@@ -572,8 +572,8 @@ def get_oar_default_properties(site_uid, filename, options)
   return oarnodes
 end
 
-def get_oar_disk_properties(site_uid, filename, options)
-  oarnodes = get_oar_data(site_uid, filename, options)
+def get_oar_disk_properties(site_uid, options)
+  oarnodes = get_oar_data(site_uid, options)
 
   # Handle the two possible input format from oarnodes -Y:
   # given by a file, and from the OAR API
@@ -589,44 +589,33 @@ def get_oar_disk_properties(site_uid, filename, options)
 end
 
 # Get all data from the OAR database
-def get_oar_data(site_uid, filename, options)
+def get_oar_data(site_uid, options)
   oarnodes = ''
-  if filename && File.exist?(filename)
-    # Read OAR properties from file
-    puts "Reading OAR resources properties from file #{filename}" if options[:verbose]
-    oarnodes = YAML.load(File.open(filename, 'rb') { |f| f.read })
+  if options[:api][:uri] and not options[:api][:uri].include? "api.grid5000.fr"
+    api_uri = URI.parse(options[:api][:uri]+'/oarapi/resources/details.json?limit=999999')
   else
+    api_uri = URI.parse('https://api.grid5000.fr/stable/sites/' + site_uid  + '/internal/oarapi/resources/details.json?limit=999999')
+  end
 
-    if options[:api][:uri] and not options[:api][:uri].include? "api.grid5000.fr"
-      api_uri = URI.parse(options[:api][:uri]+'/oarapi/resources/details.json?limit=999999')
-    else
-      api_uri = URI.parse('https://api.grid5000.fr/stable/sites/' + site_uid  + '/internal/oarapi/resources/details.json?limit=999999')
-    end
-
-    # Download the OAR properties from the OAR API (through G5K API)
-    puts "Downloading resources properties from #{api_uri} ..." if options[:verbose]
-    http = Net::HTTP.new(api_uri.host, api_uri.port)
-    if api_uri.scheme == "https"
-      http.use_ssl = true
-    end
-    request = Net::HTTP::Get.new(api_uri.request_uri, {'User-Agent' => 'reference-repository/gen/oar-properties'})
-
-    # For outside g5k network access
-    if options[:api][:user] && options[:api][:pwd]
-      request.basic_auth(options[:api][:user], options[:api][:pwd])
-    end
-
-    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]
+  # Download the OAR properties from the OAR API (through G5K API)
+  puts "Downloading resources properties from #{api_uri} ..." if options[:verbose]
+  http = Net::HTTP.new(api_uri.host, api_uri.port)
+  if api_uri.scheme == "https"
+    http.use_ssl = true
+  end
+  request = Net::HTTP::Get.new(api_uri.request_uri, {'User-Agent' => 'reference-repository/gen/oar-properties'})
 
-    oarnodes = JSON.parse(response.body)
-    if filename
-      puts "Saving OAR resources properties as #{filename}" if options[:verbose]
-      File.write(filename, YAML.dump(oarnodes))
-    end
+  # For outside g5k network access
+  if options[:api][:user] && options[:api][:pwd]
+    request.basic_auth(options[:api][:user], options[:api][:pwd])
   end
 
+  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]
+
+  oarnodes = JSON.parse(response.body)
+ 
   # Adapt from the format of the OAR API
   oarnodes = oarnodes['items'] if oarnodes.key?('items')
   return oarnodes
@@ -787,9 +776,8 @@ def get_oar_resources_from_oar(options)
   sites = options[:sites]
   diff = options[:diff]
   sites.each do |site_uid|
-    filename = diff.is_a?(String) ? diff.gsub('%s', site_uid) : nil
     properties[site_uid] = {}
-    properties[site_uid]['resources'] = get_oar_data(site_uid, filename, options)
+    properties[site_uid]['resources'] = get_oar_data(site_uid, options)
   end
   # for debugging
   if ENV['FAKE_EMPTY_SITE']
@@ -848,10 +836,9 @@ def get_oar_properties_from_oar(options)
   sites = options[:sites]
   diff = options[:diff]
   sites.each do |site_uid|
-    filename = diff.is_a?(String) ? diff.gsub('%s', site_uid) : nil
     properties[site_uid] = {}
-    properties[site_uid]['default'] = get_oar_default_properties(site_uid, filename, options)
-    properties[site_uid]['disk'] = get_oar_disk_properties(site_uid, filename, options)
+    properties[site_uid]['default'] = get_oar_default_properties(site_uid, options)
+    properties[site_uid]['disk'] = get_oar_disk_properties(site_uid, options)
   end
   return properties
 end
-- 
GitLab


From 59fa19f38ad979e167b499c58bae4f6503f0dd74 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:46:49 +0200
Subject: [PATCH 12/57] Minor style improvements

---
 lib/refrepo/gen/oar-properties.rb | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 7a2499e504a..dd5f01b0f13 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -821,8 +821,7 @@ end
 # Get the properties of each node
 def get_oar_properties_from_the_ref_repo(global_hash, options)
   properties = {}
-  sites = options.fetch(:sites)
-  sites.each do |site_uid|
+  options.fetch(:sites).each do |site_uid|
     properties[site_uid] = {
       'default' => get_ref_default_properties(site_uid, global_hash.fetch('sites').fetch(site_uid)),
       'disk' => get_ref_disk_properties(site_uid, global_hash.fetch('sites').fetch(site_uid))
@@ -833,14 +832,13 @@ end
 
 def get_oar_properties_from_oar(options)
   properties = {}
-  sites = options[:sites]
-  diff = options[:diff]
-  sites.each do |site_uid|
-    properties[site_uid] = {}
-    properties[site_uid]['default'] = get_oar_default_properties(site_uid, options)
-    properties[site_uid]['disk'] = get_oar_disk_properties(site_uid, options)
+  options.fetch(:sites).each do |site_uid|
+    properties[site_uid] = {
+      'default' => get_oar_default_properties(site_uid, options),
+      'disk' => get_oar_disk_properties(site_uid, options)
+    }
   end
-  return properties
+  properties
 end
 
 def do_diff(options, generated_hierarchy, global_hash, refrepo_properties)
-- 
GitLab


From 0bdb92e85e0a69818192fbccdbae208a6bdc079d Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:47:11 +0200
Subject: [PATCH 13/57] remove debug code (useless now that we have a test
 suite)

---
 lib/refrepo/gen/oar-properties.rb | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index dd5f01b0f13..9c87feca496 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -779,12 +779,6 @@ def get_oar_resources_from_oar(options)
     properties[site_uid] = {}
     properties[site_uid]['resources'] = get_oar_data(site_uid, options)
   end
-  # for debugging
-  if ENV['FAKE_EMPTY_SITE']
-    properties.keys.each do |site|
-      properties[site]['resources'] = []
-    end
-  end
   return properties
 end
 
-- 
GitLab


From 25b1c5e68b3afebd84bee7964769fff81f84de62 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:48:10 +0200
Subject: [PATCH 14/57] Style fixes

---
 lib/refrepo/gen/oar-properties.rb | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 9c87feca496..b7a987a45c9 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -773,13 +773,12 @@ end
 
 def get_oar_resources_from_oar(options)
   properties = {}
-  sites = options[:sites]
-  diff = options[:diff]
-  sites.each do |site_uid|
-    properties[site_uid] = {}
-    properties[site_uid]['resources'] = get_oar_data(site_uid, options)
+  options.fetch(:sites).each do |site_uid|
+    properties[site_uid] = {
+      'resources' => get_oar_data(site_uid, options)
+    }
   end
-  return properties
+  properties
 end
 
 # sudo exec
-- 
GitLab


From 601aef5a99695638723fb8789784e6302cc5da84 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 06:58:24 +0200
Subject: [PATCH 15/57] Remove dead code

---
 lib/refrepo/gen/oar-properties.rb | 24 ++----------------------
 1 file changed, 2 insertions(+), 22 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index b7a987a45c9..0629aeeff59 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -558,33 +558,13 @@ end
 
 def get_oar_default_properties(site_uid, options)
   oarnodes = get_oar_data(site_uid, options)
-
-  # Handle the two possible input format from oarnodes -Y:
-  # given by a file, and from the OAR API
-  if oarnodes.is_a?(Hash)
-    oarnodes = oarnodes.map { |_k, v| v['type'] == 'default' ? [get_ids(v['host'])['node_uid'], v] : [nil, nil] }.to_h
-    oarnodes.delete(nil)
-  elsif oarnodes.is_a?(Array)
-    oarnodes = oarnodes.select { |v| v['type'] == 'default' }.map { |v| [get_ids(v['host'])['node_uid'], v] }.to_h
-  else
-    raise 'Invalid input format for OAR properties'
-  end
+  oarnodes = oarnodes.select { |v| v['type'] == 'default' }.map { |v| [get_ids(v['host'])['node_uid'], v] }.to_h
   return oarnodes
 end
 
 def get_oar_disk_properties(site_uid, options)
   oarnodes = get_oar_data(site_uid, options)
-
-  # Handle the two possible input format from oarnodes -Y:
-  # given by a file, and from the OAR API
-  if oarnodes.is_a?(Hash)
-    oarnodes = oarnodes.map { |_k, v|  v['type'] == 'disk' ? [[get_ids(v['host'])['node_uid'], v['disk']], v] : [nil, nil] }.to_h
-    oarnodes.delete(nil)
-  elsif oarnodes.is_a?(Array)
-    oarnodes = oarnodes.select { |v| v['type'] == 'disk' }.map { |v| [[get_ids(v['host'])['node_uid'], v['disk']], v] }.to_h
-  else
-    raise 'Invalid input format for OAR properties'
-  end
+  oarnodes = oarnodes.select { |v| v['type'] == 'disk' }.map { |v| [[get_ids(v['host'])['node_uid'], v['disk']], v] }.to_h
   return oarnodes
 end
 
-- 
GitLab


From a159f5d25d00e0a522e698aee49a06b0bd7bfa16 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 07:23:02 +0200
Subject: [PATCH 16/57] Do not install development gems

---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7a6113bd65d..cd875cc7deb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,7 +20,7 @@ validate-data:
    script:
     - apt-get update && apt-get -y install ruby ruby-dev build-essential rake wget
     - gem install bundler -v 1.17.3
-    - bundle install
+    - bundle install --without development
       # Add G5K CA certificate
     - wget --no-check-certificate -q https://www.grid5000.fr/certs/ca2019.grid5000.fr.crt -O /usr/local/share/ca-certificates/ca2019.grid5000.fr.crt
     - /usr/sbin/update-ca-certificates
@@ -35,7 +35,7 @@ generate-reference-api:
    script:
     - apt-get update && apt-get -y install ruby ruby-dev build-essential rake git
     - gem install bundler -v 1.17.3
-    - bundle install
+    - bundle install --without development
     - export TZ=Europe/Paris
     - rake reference-api
     - git status
-- 
GitLab


From 54e43c7dd4cab4f11f1a083a7d495ffa7af5dd31 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 07:24:25 +0200
Subject: [PATCH 17/57] Also install code-explorer

---
 Gemfile | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/Gemfile b/Gemfile
index 95bdaef9850..79aacc0e882 100644
--- a/Gemfile
+++ b/Gemfile
@@ -9,7 +9,8 @@ gem "dns-zone"
 gem "ruby-cute", :require => "cute"
 gem "peach"
 gem "restfully"
-gem "rspec", :group => [:development, :test]
-gem "webmock", :group => [:development, :test]
-gem "simplecov", :group => [:development, :test]
-gem "mutant-rspec", :group => [:development, :test]
+gem "rspec", :group => [:development]
+gem "webmock", :group => [:development]
+gem "simplecov", :group => [:development]
+gem "mutant-rspec", :group => [:development]
+gem "code-explorer", :group => [:development]
-- 
GitLab


From ebc925af18eb9322eb239bbb9f61d11288d69814 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 07:25:26 +0200
Subject: [PATCH 18/57] Update Gemfile.lock

---
 Gemfile.lock | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/Gemfile.lock b/Gemfile.lock
index b92256af24d..02e05b535bd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,10 +1,31 @@
 GEM
   remote: https://rubygems.org/
   specs:
+    abstract_method (1.2.1)
+    abstract_type (0.0.7)
+    adamantium (0.2.0)
+      ice_nine (~> 0.11.0)
+      memoizable (~> 0.4.0)
     addressable (2.6.0)
       public_suffix (>= 2.0.2, < 4.0)
+    anima (0.3.1)
+      abstract_type (~> 0.0.7)
+      adamantium (~> 0.2)
+      equalizer (~> 0.0.11)
+    ast (2.4.0)
     backports (3.15.0)
     bond (0.4.3)
+    cheetah (0.5.0)
+      abstract_method (~> 1.2)
+    code-explorer (0.3.0)
+      cheetah (~> 0)
+      coderay (~> 1)
+      parser (~> 2.0)
+      sinatra (~> 1)
+    coderay (1.1.2)
+    concord (0.1.5)
+      adamantium (~> 0.2.0)
+      equalizer (~> 0.0.9)
     crack (0.4.3)
       safe_yaml (~> 1.0.0)
     diff-lcs (1.3)
@@ -13,6 +34,7 @@ GEM
     docile (1.3.2)
     domain_name (0.5.20190701)
       unf (>= 0.0.5, < 1.0.0)
+    equalizer (0.0.11)
     faraday (0.15.4)
       multipart-post (>= 1.2, < 3)
     faraday-cookie_jar (0.0.6)
@@ -24,14 +46,44 @@ GEM
     hashdiff (1.0.0)
     http-cookie (1.0.3)
       domain_name (~> 0.5)
+    ice_nine (0.11.2)
     ipaddress (0.8.3)
     json (1.8.6)
     mediawiki_api (0.7.1)
       faraday (~> 0.9, >= 0.9.0)
       faraday-cookie_jar (~> 0.0, >= 0.0.6)
       faraday_middleware (~> 0.10, >= 0.10.0)
+    memoizable (0.4.2)
+      thread_safe (~> 0.3, >= 0.3.1)
     mime-types (2.99.3)
+    morpher (0.2.6)
+      abstract_type (~> 0.0.7)
+      adamantium (~> 0.2.0)
+      anima (~> 0.3.0)
+      ast (~> 2.2)
+      concord (~> 0.1.5)
+      equalizer (~> 0.0.9)
+      ice_nine (~> 0.11.0)
+      procto (~> 0.0.2)
     multipart-post (2.1.1)
+    mutant (0.8.24)
+      abstract_type (~> 0.0.7)
+      adamantium (~> 0.2.0)
+      anima (~> 0.3.0)
+      ast (~> 2.2)
+      concord (~> 0.1.5)
+      diff-lcs (~> 1.3)
+      equalizer (~> 0.0.9)
+      ice_nine (~> 0.11.1)
+      memoizable (~> 0.4.2)
+      morpher (~> 0.2.6)
+      parser (~> 2.5.1)
+      procto (~> 0.0.2)
+      regexp_parser (~> 1.2)
+      unparser (~> 0.4.2)
+    mutant-rspec (0.8.24)
+      mutant (~> 0.8.24)
+      rspec-core (>= 3.4.0, < 4.0.0)
     net-ssh (4.2.0)
     net-ssh-gateway (2.0.0)
       net-ssh (>= 4.0.0)
@@ -39,12 +91,18 @@ GEM
       net-ssh (>= 2.6.5)
       net-ssh-gateway (>= 1.2.0)
     netrc (0.11.0)
+    parser (2.5.3.0)
+      ast (~> 2.4.0)
     peach (0.5.1)
+    procto (0.0.3)
     public_suffix (3.1.1)
     rack (1.6.4)
     rack-cache (1.9.0)
       rack (>= 0.4)
+    rack-protection (1.5.5)
+      rack
     rb-readline (0.5.5)
+    regexp_parser (1.6.0)
     rest-client (1.8.0)
       http-cookie (>= 1.0.2, < 2.0)
       mime-types (>= 1.16, < 3.0)
@@ -99,9 +157,23 @@ GEM
       json (>= 1.8, < 3)
       simplecov-html (~> 0.10.0)
     simplecov-html (0.10.2)
+    sinatra (1.4.8)
+      rack (~> 1.5)
+      rack-protection (~> 1.4)
+      tilt (>= 1.3, < 3)
+    thread_safe (0.3.6)
+    tilt (2.0.10)
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.7.6)
+    unparser (0.4.2)
+      abstract_type (~> 0.0.7)
+      adamantium (~> 0.2.0)
+      concord (~> 0.1.5)
+      diff-lcs (~> 1.3)
+      equalizer (~> 0.0.9)
+      parser (>= 2.3.1.2, < 2.6)
+      procto (~> 0.0.2)
     webmock (3.7.5)
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
@@ -111,11 +183,13 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
+  code-explorer
   diffy
   dns-zone
   hash_validator
   hashdiff
   mediawiki_api
+  mutant-rspec
   net-ssh
   peach
   restfully
-- 
GitLab


From 66c0b5e5a012053601a260d963438e396ff202ec Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 28 Sep 2019 07:32:32 +0200
Subject: [PATCH 19/57] rubocop fixes

---
 lib/refrepo/gen/oar-properties.rb | 11 ++---------
 spec/oar_properties_spec.rb       |  2 +-
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 0629aeeff59..629659e28a1 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -570,7 +570,6 @@ end
 
 # Get all data from the OAR database
 def get_oar_data(site_uid, options)
-  oarnodes = ''
   if options[:api][:uri] and not options[:api][:uri].include? "api.grid5000.fr"
     api_uri = URI.parse(options[:api][:uri]+'/oarapi/resources/details.json?limit=999999')
   else
@@ -814,7 +813,7 @@ def get_oar_properties_from_oar(options)
   properties
 end
 
-def do_diff(options, generated_hierarchy, global_hash, refrepo_properties)
+def do_diff(options, generated_hierarchy, refrepo_properties)
 
   properties = {
     'ref' => refrepo_properties,
@@ -1039,12 +1038,6 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
       "gpu" => site_resources.length > 0 ? site_resources.map{|r| r["gpu"]}.select{|x| not x.nil?}.max : 0
   }
 
-  newly_allocated_resources = {
-      "cpu" => [],
-      "core" =>[],
-      "gpu" => []
-  }
-
   # Some existing cluster have GPUs, but no GPU ID has been allocated to them
   if next_rsc_ids["gpu"].nil?
     next_rsc_ids["gpu"] = 0
@@ -1390,7 +1383,7 @@ def generate_oar_properties(options)
 
   # Do=Diff
   if options.key? :diff and options[:diff]
-    do_diff(options, generated_hierarchy, data_hierarchy, refrepo_properties)
+    do_diff(options, generated_hierarchy, refrepo_properties)
   end
 
   # Do=update
diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 5218e029023..e79963cf474 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -22,7 +22,7 @@ end
 
 # This code comes from https://gist.github.com/herrphon/2d2ebbf23c86a10aa955
 # and enables to capture all output made on stdout and stderr by a block of code
-def capture(&block)
+def capture(&_block)
   begin
     $stdout = StringIO.new
     $stderr = StringIO.new
-- 
GitLab


From bebec648ed51f8c25ab51aefbcc1e283c2634f47 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Tue, 1 Oct 2019 08:21:26 +0200
Subject: [PATCH 20/57] Improve documentation

---
 README.md | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/README.md b/README.md
index c0117a7add7..caa38c3875f 100644
--- a/README.md
+++ b/README.md
@@ -41,3 +41,12 @@ all tools that require to authenticate against Grid'5000 use credentials from ~/
  password: password
  version: stable
 ```
+
+# Some development information
+
+* Run rspec tests: `bundler exec rspec`
+    + This generates coverage information in the coverage/ directory
+* Explore the code using code-explorer: `bundle exec code-explorer`
+* Run mutation testing:
+    + A specific method: `bundler exec mutant --include lib --require refrepo --use rspec 'OarProperties#get_oar_properties_from_oar'`
+    + The whole OAR properties generator (takes a long time): `bundler exec mutant --include lib --require refrepo --use rspec 'OarProperties'`
-- 
GitLab


From dc3650bd7fcd2b922ac9c135a6e7e1fadceaf9e4 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 4 Oct 2019 14:34:04 +0200
Subject: [PATCH 21/57] handle retired clusters

---
 lib/refrepo/gen/oar-properties.rb | 37 ++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 5 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 629659e28a1..5f780448c41 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -594,7 +594,7 @@ def get_oar_data(site_uid, options)
   puts '... done' if options[:verbose]
 
   oarnodes = JSON.parse(response.body)
- 
+
   # Adapt from the format of the OAR API
   oarnodes = oarnodes['items'] if oarnodes.key?('items')
   return oarnodes
@@ -1052,9 +1052,15 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     cpu_idx = 0
     core_idx = 0
 
-    cluster_resources = site_resources.select{|r| r["cluster"] == cluster_name}
-
     cluster_desc_from_input_files = data_hierarchy['sites'][site_name]['clusters'][cluster_name]
+    cluster_nodes = cluster_desc_from_input_files['nodes']
+    
+    node_count = cluster_nodes.length
+
+    cluster_resources = site_resources
+                            .select{|r| r["cluster"] == cluster_name}
+                            .select{|r| cluster_nodes.include?(r["host"].split(".")[0])}
+
     first_node = cluster_desc_from_input_files['nodes'].first[1]
 
     # Some clusters such as graphite have a different organisation:
@@ -1068,7 +1074,6 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     # To cope with such cases and ensure an homogeneous processing a "is_quirk_cluster" variable is set to true.
     is_quirk_cluster = false
 
-    node_count = cluster_desc_from_input_files['nodes'].length
 
     cpu_count = first_node['architecture']['nb_procs']
     core_count = first_node['architecture']['nb_cores'] / cpu_count
@@ -1129,7 +1134,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     end
 
     phys_rsc_map.each do |physical_resource, variables|
-      # Try to fix a bad allocation of physical resources. There is two main cases:
+      # Try to detect a bad allocation of physical resources. There is two main cases:
       #  case 1) We detect too many resources: it likely means than a rsc of another cluster has been mis-associated to
       #   this cluster. A simple fix is to sort <RESOURCES> of the cluster according to their number of occurence in
       #   the cluster's properties, and keep only the N <RESOURCES> that appears the most frequently, where N is equal
@@ -1142,6 +1147,28 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
       expected_phys_rsc_count = variables[:per_cluster_count]
 
       if phys_rsc_ids.length != expected_phys_rsc_count
+
+        # We detected a situation where a phyisical resource is misallocated to a wrong OAR property
+        if cluster_resources.map{|r| r[physical_resource]}.length == expected_phys_rsc_count
+          resource_count = Hash.new([])
+          cluster_resources.select{|r| not r[physical_resource].nil? }.each do |resource|
+            resource_count[resource[physical_resource]] += [resource]
+          end
+
+          for (k, v) in resource_count
+            if v.size > 1
+              duplicated_resources = cluster_resources.select{|r| r[physical_resource] == k}
+              oar_sql_clause = duplicated_resources.map{|r| r["id"]}.map{|rid| "resource_id='#{rid}'"}.join(" OR ")
+
+              puts("################################")
+              puts("# Error: resources with ids #{duplicated_resources.map{|r| r["id"]}} have the same value for #{physical_resource} (#{physical_resource} is equal to #{k})\n")
+              puts("# You can review this situation via the following command:\n")
+              puts("################################")
+              puts("oarnodes -Y --sql \"#{oar_sql_clause}\"\n")
+            end
+          end
+        end
+
         raise "#{physical_resource} has an unexpected number of resources (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count})"
       end
 
-- 
GitLab


From 3fbb5ad89cd9efb9ca3e7f8cf5a8adfce4fccd6d Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 4 Oct 2019 14:34:37 +0200
Subject: [PATCH 22/57] tests arguments and clusters without gpu

---
 spec/oar_properties_spec.rb                   |  477 ++-
 ...oar_api_configured_server_without_gpu.json | 2978 +++++++++++++++++
 ...ta_hierarchy_stubbed_data_without_gpu.json | 1984 +++++++++++
 3 files changed, 5411 insertions(+), 28 deletions(-)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_without_gpu.json
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index e79963cf474..6b7ccb05548 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -48,6 +48,7 @@ def prepare_stubs(oar_api, data_hierarchy)
   conf = RefRepo::Utils.get_api_config
   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 = load_stub_file_content(oar_api)
@@ -66,6 +67,60 @@ end
 
 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")
@@ -279,8 +334,6 @@ TXT
     end
   end
 
-
-
   context 'OAR server with data' do
     before do
       prepare_stubs("dump_oar_api_configured_server.json", "load_data_hierarchy_stubbed_data.json")
@@ -307,7 +360,7 @@ TXT
 +---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
 |   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
 +---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
+TXT
 
       expected_clustera1_desc = <<-TXT
 |  clustera | clustera-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
@@ -316,7 +369,7 @@ TXT
 |  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
+TXT
 
       expected_clustera2_desc = <<-TXT
 |  clustera | clustera-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
@@ -326,7 +379,7 @@ TXT
 |  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
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -364,7 +417,7 @@ 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
+TXT
 
       expected_clustera1_cmds = <<-TXT
 ###################################
@@ -374,7 +427,7 @@ oarnodesetting --sql "host='clustera-1.fakesite.grid5000.fr' AND resource_id='1'
 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
+TXT
 
       expected_clustera2_cmds = <<-TXT
 ###################################
@@ -385,11 +438,11 @@ oarnodesetting --sql "host='clustera-2.fakesite.grid5000.fr' AND resource_id='18
 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
+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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -462,7 +515,7 @@ TXT
 +---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
 |   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
 +---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
+TXT
 
       expected_clusterb1_desc = <<-TXT
 |  clusterb | clusterb-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
@@ -472,7 +525,7 @@ TXT
 |  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
+TXT
 
       expected_clusterb2_desc = <<-TXT
 |  clusterb | clusterb-2           | 3     | 17    | 0        | 5    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
@@ -482,7 +535,7 @@ TXT
 |  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
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -541,11 +594,11 @@ oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -p host='clusterb-2.fakes
 oarnodesetting -a -h 'clusterb-2.fakesite.grid5000.fr' -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' -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' -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
+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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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
+TXT
 
       expected_clusterb4_cmds = <<-TXT
 echo '================================================================================'
@@ -620,7 +673,7 @@ TXT
     ["+", "switch", nil]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "MULTIPLE"]
-      TXT
+TXT
 
       expected_clusterb2_diff = <<-TXT
   clusterb-2: new node !
@@ -656,7 +709,7 @@ TXT
     ["+", "switch", nil]
     ["+", "virtual", "ivt"]
     ["+", "wattmeter", "MULTIPLE"]
-      TXT
+TXT
 
       expected_clusterb3_diff =  <<-TXT
   ["clusterb-1", "sdb.clusterb-1"]: new disk !
@@ -725,7 +778,7 @@ TXT
     ["+", "maintenance", "NO"]
     ["+", "network_address", ""]
     ["+", "production", "YES"]
-      TXT
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -739,7 +792,7 @@ TXT
 
 
 
-  context 'OAR server with data' do
+  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
@@ -765,7 +818,7 @@ TXT
 +---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
 |   cluster | host                 | cpu   | core  | cpuset   | gpu  | gpudevice            | cpumodel                       | gpumodel                      |
 +---------- + -------------------- + ----- + ----- + -------- + ---- + -------------------- + ------------------------------ + ------------------------------+
-      TXT
+TXT
 
       expected_clusterb1_desc = <<-TXT
 |  clusterb | clusterb-1           | 1     | 1     | 0        | 1    | 0                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
@@ -774,7 +827,7 @@ TXT
 |  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
+TXT
 
       expected_clusterb2_desc = <<-TXT
 |  clusterb | clusterb-2           | 4     | 26    | 9        | 7    | 2                    | Intel Xeon Silver 4110         | GeForce RTX 2080 Ti           |
@@ -784,7 +837,7 @@ TXT
 |  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
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -822,7 +875,7 @@ 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
+TXT
 
       expected_clusterb1_cmds = <<-TXT
 ###################################
@@ -832,7 +885,7 @@ oarnodesetting --sql "host='clusterb-1.fakesite.grid5000.fr' AND resource_id='1'
 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
+TXT
 
       expected_clusterb2_cmds = <<-TXT
 ###################################
@@ -854,11 +907,11 @@ oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' AND resource_id='32
 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
+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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -890,11 +943,11 @@ oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='default'"
 
       expected_clusterb1_diff = <<-TXT
   clusterb-1: OK
-      TXT
+TXT
 
       expected_clusterb2_diff = <<-TXT
   clusterb-2: OK
-      TXT
+TXT
 
       expected_clusterb3_diff = <<-TXT
   ["clusterb-1", "sdb.clusterb-1"]: OK
@@ -903,7 +956,7 @@ oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='default'"
   ["clusterb-2", "sdb.clusterb-2"]: OK
   ["clusterb-2", "sdc.clusterb-2"]: OK
   ["clusterb-2", "sdd.clusterb-2"]: OK
-      TXT
+TXT
 
       generator_output = capture do
         generate_oar_properties(options)
@@ -914,4 +967,372 @@ oarnodesetting --sql "host='clusterb-2.fakesite.grid5000.fr' and type='default'"
       expect(generator_output[:stdout]).to include(expected_clusterb3_diff)
     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' -p host='clusterc-1.fakesite.grid5000.fr' -p cpu=1 -p core=1 -p cpuset=0
+oarnodesetting -a -h 'clusterc-1.fakesite.grid5000.fr' -p host='clusterc-1.fakesite.grid5000.fr' -p cpu=1 -p core=2 -p cpuset=1
+oarnodesetting -a -h 'clusterc-1.fakesite.grid5000.fr' -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' -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=29 -p cpuset=12
+oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=30 -p cpuset=13
+oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -p host='clusterc-2.fakesite.grid5000.fr' -p cpu=4 -p core=31 -p cpuset=14
+oarnodesetting -a -h 'clusterc-2.fakesite.grid5000.fr' -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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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 !
+    ["+", "cluster", "clusterc"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 3]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", nil]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+TXT
+
+      expected_clusterc2_diff = <<-TXT
+  clusterc-2: new node !
+    ["+", "cluster", "clusterc"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 3]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "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)
+    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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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)
+    end
+  end
 end
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_without_gpu.json b/spec/stub_oar_properties/dump_oar_api_configured_server_without_gpu.json
new file mode 100644
index 00000000000..83e5bd6b141
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_without_gpu.json
@@ -0,0 +1,2978 @@
+{
+   "links" : [
+      {
+         "href" : "//oarapi/resources/details.json?limit=999999&offset=0",
+         "rel" : "self"
+      }
+   ],
+   "total" : 38,
+   "offset" : 0,
+   "items" : [
+      {
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 0,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 1,
+         "drain" : "NO",
+         "core" : 1,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/1"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/1/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 1,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 2,
+         "drain" : "NO",
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 1,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib" : "NO",
+         "production" : "YES",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "id" : 2,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/2"
+            },
+            {
+               "href" : "//oarapi/resources/2/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/3"
+            },
+            {
+               "href" : "//oarapi/resources/3/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 3,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 2,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 3
+      },
+      {
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/4"
+            },
+            {
+               "href" : "//oarapi/resources/4/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 4,
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.1",
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "switch" : null,
+         "disk" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 3,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 4,
+         "drain" : "NO",
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1"
+      },
+      {
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 5,
+         "next_finaud_decision" : "NO",
+         "cpu" : 1,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 4,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/5"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/5/jobs"
+            }
+         ],
+         "id" : 5
+      },
+      {
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpuset" : 5,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "core" : 6,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/6",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/6/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 6,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0
+      },
+      {
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/7"
+            },
+            {
+               "href" : "//oarapi/resources/7/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 7,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 7,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 6,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10
+      },
+      {
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 7,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "drain" : "NO",
+         "core" : 8,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "id" : 8,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/8",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/8/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/9"
+            },
+            {
+               "href" : "//oarapi/resources/9/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 9,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 9,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc"
+      },
+      {
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "disk" : null,
+         "switch" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/10",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/10/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 10,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "drain" : "NO",
+         "core" : 10,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 9,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64"
+      },
+      {
+         "cpu" : 2,
+         "next_finaud_decision" : "NO",
+         "core" : 11,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpuset" : 10,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/11"
+            },
+            {
+               "href" : "//oarapi/resources/11/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 11,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "drain" : "NO",
+         "core" : 12,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 11,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "ib" : "NO",
+         "production" : "YES",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "id" : 12,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/12",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/12/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 13,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpu" : 2,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 12,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "ib" : "NO",
+         "production" : "YES",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/13"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/13/jobs"
+            }
+         ],
+         "id" : 13,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1"
+      },
+      {
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 13,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 14,
+         "drain" : "NO",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/14",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/14/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 14,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuset" : 14,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "core" : 15,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/15"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/15/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 15,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0
+      },
+      {
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/16",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/16/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 16,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "drain" : "NO",
+         "core" : 16,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuset" : 15,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253
+      },
+      {
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "ib" : null,
+         "production" : "YES",
+         "ib_rate" : null,
+         "virtual" : null,
+         "network_address" : "",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "switch" : null,
+         "disk" : "sdb.clusterc-1",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "memcore" : null,
+         "wattmeter" : null,
+         "gpu_count" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/17",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/17/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 17,
+         "last_job_date" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "core" : null,
+         "drain" : "NO",
+         "cpu" : null,
+         "next_finaud_decision" : "NO",
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "cpucore" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "myri_count" : null,
+         "opa" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "state" : "Alive",
+         "ib_count" : null,
+         "cpuset" : -1
+      },
+      {
+         "type" : "disk",
+         "scheduler_priority" : 0,
+         "core" : null,
+         "drain" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "cpuarch" : null,
+         "eth_rate" : null,
+         "ib_count" : null,
+         "state" : "Alive",
+         "cpuset" : -1,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "myri_count" : null,
+         "opa" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "ib_rate" : null,
+         "network_address" : "",
+         "virtual" : null,
+         "production" : "YES",
+         "ib" : null,
+         "opa_count" : null,
+         "memcpu" : null,
+         "next_state" : "UnChanged",
+         "memnode" : null,
+         "cluster_priority" : null,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/18"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/18/jobs"
+            }
+         ],
+         "id" : 18,
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "memcore" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "switch" : null,
+         "disk" : "sdc.clusterc-1"
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : null,
+         "finaud_decision" : "NO",
+         "cpufreq" : null,
+         "disk_reservation_count" : null,
+         "drain" : "NO",
+         "core" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "myri_rate" : null,
+         "disktype" : null,
+         "myri" : null,
+         "opa_rate" : null,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : null,
+         "gpu_model" : null,
+         "nodemodel" : null,
+         "max_walltime" : null,
+         "gpu" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "cpuset" : -1,
+         "state" : "Alive",
+         "ib_count" : null,
+         "api_timestamp" : 1569605253,
+         "myri_count" : null,
+         "opa" : null,
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "ib" : null,
+         "production" : "YES",
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "mic" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "",
+         "virtual" : null,
+         "ib_rate" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "memcore" : null,
+         "switch" : null,
+         "disk" : "sdd.clusterc-1",
+         "cluster_priority" : null,
+         "memnode" : null,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/19"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/19/jobs"
+            }
+         ],
+         "id" : 19,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "ip" : null
+      },
+      {
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "drain" : "NO",
+         "core" : 17,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 0,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "id" : 20,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/20",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/20/jobs"
+            }
+         ],
+         "last_job_date" : 0
+      },
+      {
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/21",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/21/jobs"
+            }
+         ],
+         "id" : 21,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "drain" : "NO",
+         "core" : 18,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 1,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "cpucore" : 8,
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640"
+      },
+      {
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/22"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/22/jobs"
+            }
+         ],
+         "id" : 22,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 19,
+         "drain" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 2,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES"
+      },
+      {
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/23",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/23/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 23,
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "switch" : null,
+         "disk" : null,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 20,
+         "drain" : "NO",
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 3,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "besteffort" : "YES",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640"
+      },
+      {
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/24",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/24/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 24,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2",
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "drain" : "NO",
+         "core" : 21,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 4,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null
+      },
+      {
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/25",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/25/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 25,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 22,
+         "drain" : "NO",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 5,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0
+      },
+      {
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "id" : 26,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/26",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/26/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 6,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 23,
+         "drain" : "NO"
+      },
+      {
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 7,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "core" : 24,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/27"
+            },
+            {
+               "href" : "//oarapi/resources/27/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 27,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO"
+      },
+      {
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "drain" : "NO",
+         "core" : 25,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "id" : 28,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/28",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/28/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk" : null,
+         "switch" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null
+      },
+      {
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "core" : 26,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpuset" : 9,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/29"
+            },
+            {
+               "href" : "//oarapi/resources/29/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 29,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "cpuset" : 10,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "core" : 27,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/30"
+            },
+            {
+               "href" : "//oarapi/resources/30/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 30,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 28,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 11,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "ib" : "NO",
+         "production" : "YES",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/31"
+            },
+            {
+               "href" : "//oarapi/resources/31/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 31,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2"
+      },
+      {
+         "ib" : "NO",
+         "production" : "YES",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "id" : 32,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/32"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/32/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.2",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 29,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 12,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253
+      },
+      {
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "production" : "YES",
+         "ib" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/33"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/33/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 33,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 30,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 13,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES"
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 31,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 14,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/34",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/34/jobs"
+            }
+         ],
+         "id" : 34,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.2"
+      },
+      {
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 15,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "core" : 32,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "id" : 35,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/35"
+            },
+            {
+               "href" : "//oarapi/resources/35/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES"
+      },
+      {
+         "opa_rate" : null,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "nodemodel" : null,
+         "max_walltime" : null,
+         "gpu" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "cpuset" : -1,
+         "ib_count" : null,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "myri_count" : null,
+         "opa" : null,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : null,
+         "finaud_decision" : "NO",
+         "cpufreq" : null,
+         "disk_reservation_count" : null,
+         "drain" : "NO",
+         "core" : null,
+         "type" : "disk",
+         "scheduler_priority" : 0,
+         "cpu" : null,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "memcore" : null,
+         "switch" : null,
+         "disk" : "sdb.clusterc-2",
+         "cluster_priority" : null,
+         "memnode" : null,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/36"
+            },
+            {
+               "href" : "//oarapi/resources/36/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 36,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "ip" : null,
+         "ib" : null,
+         "production" : "YES",
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "mic" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : null,
+         "network_address" : "",
+         "ib_rate" : null
+      },
+      {
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "opa" : null,
+         "myri_count" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "state" : "Alive",
+         "ib_count" : null,
+         "cpuset" : -1,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : null,
+         "disktype" : null,
+         "myri" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "drain" : "NO",
+         "core" : null,
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "switch" : null,
+         "disk" : "sdc.clusterc-2",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "memcore" : null,
+         "wattmeter" : null,
+         "gpu_count" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "href" : "//oarapi/resources/37",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/37/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 37,
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "production" : "YES",
+         "ib" : null,
+         "ib_rate" : null,
+         "virtual" : null,
+         "network_address" : "",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null
+      },
+      {
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "myri_count" : null,
+         "opa" : null,
+         "api_timestamp" : 1569605253,
+         "ib_count" : null,
+         "state" : "Alive",
+         "cpuset" : -1,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "myri_rate" : null,
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "core" : null,
+         "drain" : "NO",
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "id" : 38,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/38"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/38/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "disk" : "sdd.clusterc-2",
+         "switch" : null,
+         "memcore" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "ib_rate" : null,
+         "network_address" : "",
+         "virtual" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "memcpu" : null,
+         "next_state" : "UnChanged",
+         "opa_count" : null,
+         "production" : "YES",
+         "ib" : null
+      }
+   ],
+   "api_timestamp" : 1569605253
+}
+
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
new file mode 100644
index 00000000000..88f43f9bb15
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
@@ -0,0 +1,1984 @@
+{
+  "sites": {
+    "fakesite": {
+      "clusters": {
+        "clustera": {
+          "nodes": {
+            "clustera-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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"
+        },
+        "clusterc": {
+          "nodes": {
+            "clusterc-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "gpu": {
+                "gpu": true,
+                "gpu_cores": 17408,
+                "gpu_count": 4,
+                "gpu_model": "RTX 2080 Ti",
+                "gpu_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": "clusterc-1.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterc-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": "clusterc-pdu1"
+                      },
+                      {
+                        "port": 1,
+                        "uid": "clusterc-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterc-1"
+            },
+            "clusterc-2": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "gpu": {
+                "gpu": true,
+                "gpu_cores": 17408,
+                "gpu_count": 4,
+                "gpu_model": "RTX 2080 Ti",
+                "gpu_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": "clusterc-2.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterc-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": "clusterc-pdu1"
+                      },
+                      {
+                        "port": 6,
+                        "uid": "clusterc-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterc-2"
+            }
+          },
+          "created_at": "Fri, 07 Jun 2019 00:00:00 GMT",
+          "kavlan": false,
+          "model": "Dell PowerEdge T640",
+          "queues": [
+            "admin",
+            "production"
+          ],
+          "type": "cluster",
+          "uid": "clusterc"
+        },
+        "clusterb": {
+          "nodes": {
+            "clusterb-2": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "9L1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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": "clusterb-2.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterb-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": "clusterb-pdu1"
+                      },
+                      {
+                        "port": 6,
+                        "uid": "clusterb-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterb-2"
+            },
+            "clusterb-1": {
+              "architecture": {
+                "nb_cores": 16,
+                "nb_procs": 2,
+                "nb_threads": 32,
+                "platform_type": "x86_64"
+              },
+              "bios": {
+                "release_date": "06/14/2019",
+                "vendor": "Dell Inc.",
+                "version": "2.2.11"
+              },
+              "chassis": {
+                "manufacturer": "Dell Inc.",
+                "name": "PowerEdge T640",
+                "serial": "FL1CBX2"
+              },
+              "cpuset_mapping": "continuous",
+              "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": "clusterb-1.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterb-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": "clusterb-pdu1"
+                      },
+                      {
+                        "port": 1,
+                        "uid": "clusterb-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterb-1"
+            }
+          },
+          "created_at": "Fri, 07 Jun 2019 00:00:00 GMT",
+          "kavlan": false,
+          "model": "Dell PowerEdge T640",
+          "queues": [
+            "admin",
+            "production"
+          ],
+          "type": "cluster",
+          "uid": "clusterb"
+        }
+      },
+      "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/mediawiki/index.php/Fakesite:Home"
+    }
+  },
+  "network_equipments": {
+    "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-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-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-paris": {
+      "kind": "virtual",
+      "linecards": [
+        {
+          "ports": [
+            {
+              "uid": "renater-lille"
+            },
+            {
+              "uid": "renater-lyon"
+            },
+            {
+              "uid": "renater-nancy"
+            }
+          ],
+          "rate": 10000000000
+        }
+      ],
+      "type": "network_equipment",
+      "uid": "renater-paris",
+      "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-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-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": {}
+    },
+    "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": {}
+    }
+  },
+  "type": "grid",
+  "uid": "grid5000"
+}
-- 
GitLab


From 5f3ae6456f64056cddcf87f0c2ee19f65a0201f9 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 4 Oct 2019 17:24:36 +0200
Subject: [PATCH 23/57] remove unused function

---
 lib/refrepo/gen/oar-properties.rb | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 5f780448c41..72f9040d860 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -742,14 +742,6 @@ def ignore_keys()
   return ignore_default_keys() + ignore_disk_keys()
 end
 
-def oarcmd_set_node_properties(host, default_properties)
-  return '' if default_properties.size == 0
-  command  = "echo; echo 'Setting properties for #{host}:'; echo\n"
-  command += "oarnodesetting --sql \"host='#{host}' and type='default'\" -p "
-  command += properties_internal(default_properties)
-  return command + "\n\n"
-end
-
 def get_oar_resources_from_oar(options)
   properties = {}
   options.fetch(:sites).each do |site_uid|
-- 
GitLab


From 32b77ff179807d049558586d15012cdd7dbb9ee9 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 4 Oct 2019 17:25:27 +0200
Subject: [PATCH 24/57] add spec tests for cases of misconfigured resources
 (core, gpu, quirk cluster)

---
 spec/oar_properties_spec.rb                   |  234 ++
 ...configured_server_misconfigured_cores.json | 2978 +++++++++++++++++
 ...i_configured_server_misconfigured_gpu.json | 2446 ++++++++++++++
 ...r_api_configured_server_quirk_cluster.json | 2978 +++++++++++++++++
 4 files changed, 8636 insertions(+)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_cores.json
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_gpu.json
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_quirk_cluster.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 6b7ccb05548..cf1e8cf0fc3 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1335,4 +1335,238 @@ TXT
       expect(generator_output[:stdout]).to include(expected_clusterc1_diff)
     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     | 3     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
+|  clusterc | clusterc-1           | 1     | 2     | 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=3 -p cpuset=1
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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)
+    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
+
+      has_encountered_an_error = false
+      generator_output = capture do
+        begin
+          generate_oar_properties(options)
+        rescue
+          has_encountered_an_error = true
+        end
+      end
+
+      expect(generator_output[:stdout]).to include(expected_output)
+      expect(has_encountered_an_error).to be true
+    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 is associated to GPU (2), while I computed that it should be associated to 3
+TXT
+      expected_output2 = <<-TXT
+oarnodesetting --sql "resource_id='9' AND type='default'" -p gpu=3
+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)
+    end
+  end
 end
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_cores.json b/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_cores.json
new file mode 100644
index 00000000000..f3fe880a923
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_cores.json
@@ -0,0 +1,2978 @@
+{
+   "links" : [
+      {
+         "href" : "//oarapi/resources/details.json?limit=999999&offset=0",
+         "rel" : "self"
+      }
+   ],
+   "total" : 38,
+   "offset" : 0,
+   "items" : [
+      {
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 0,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 1,
+         "drain" : "NO",
+         "core" : 1,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/1"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/1/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 1,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 3,
+         "drain" : "NO",
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 1,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib" : "NO",
+         "production" : "YES",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "id" : 2,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/2"
+            },
+            {
+               "href" : "//oarapi/resources/2/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/3"
+            },
+            {
+               "href" : "//oarapi/resources/3/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 3,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 2,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 3
+      },
+      {
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/4"
+            },
+            {
+               "href" : "//oarapi/resources/4/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 4,
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.1",
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "switch" : null,
+         "disk" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 3,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 4,
+         "drain" : "NO",
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1"
+      },
+      {
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 5,
+         "next_finaud_decision" : "NO",
+         "cpu" : 1,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 4,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/5"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/5/jobs"
+            }
+         ],
+         "id" : 5
+      },
+      {
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpuset" : 5,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "core" : 6,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/6",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/6/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 6,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0
+      },
+      {
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/7"
+            },
+            {
+               "href" : "//oarapi/resources/7/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 7,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 7,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 6,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10
+      },
+      {
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 7,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "drain" : "NO",
+         "core" : 8,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "id" : 8,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/8",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/8/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/9"
+            },
+            {
+               "href" : "//oarapi/resources/9/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 9,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 9,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc"
+      },
+      {
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "disk" : null,
+         "switch" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/10",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/10/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 10,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "drain" : "NO",
+         "core" : 10,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 9,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64"
+      },
+      {
+         "cpu" : 2,
+         "next_finaud_decision" : "NO",
+         "core" : 11,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpuset" : 10,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/11"
+            },
+            {
+               "href" : "//oarapi/resources/11/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 11,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "drain" : "NO",
+         "core" : 12,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 11,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "ib" : "NO",
+         "production" : "YES",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "id" : 12,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/12",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/12/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 13,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpu" : 2,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 12,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "ib" : "NO",
+         "production" : "YES",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/13"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/13/jobs"
+            }
+         ],
+         "id" : 13,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1"
+      },
+      {
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 13,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 14,
+         "drain" : "NO",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/14",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/14/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 14,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuset" : 14,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "core" : 15,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/15"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/15/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 15,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0
+      },
+      {
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/16",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/16/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 16,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "drain" : "NO",
+         "core" : 16,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuset" : 15,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253
+      },
+      {
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "ib" : null,
+         "production" : "YES",
+         "ib_rate" : null,
+         "virtual" : null,
+         "network_address" : "",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "switch" : null,
+         "disk" : "sdb.clusterc-1",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "memcore" : null,
+         "wattmeter" : null,
+         "gpu_count" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/17",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/17/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 17,
+         "last_job_date" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "core" : null,
+         "drain" : "NO",
+         "cpu" : null,
+         "next_finaud_decision" : "NO",
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "cpucore" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "myri_count" : null,
+         "opa" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "state" : "Alive",
+         "ib_count" : null,
+         "cpuset" : -1
+      },
+      {
+         "type" : "disk",
+         "scheduler_priority" : 0,
+         "core" : null,
+         "drain" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "cpuarch" : null,
+         "eth_rate" : null,
+         "ib_count" : null,
+         "state" : "Alive",
+         "cpuset" : -1,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "myri_count" : null,
+         "opa" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "ib_rate" : null,
+         "network_address" : "",
+         "virtual" : null,
+         "production" : "YES",
+         "ib" : null,
+         "opa_count" : null,
+         "memcpu" : null,
+         "next_state" : "UnChanged",
+         "memnode" : null,
+         "cluster_priority" : null,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/18"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/18/jobs"
+            }
+         ],
+         "id" : 18,
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "memcore" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "switch" : null,
+         "disk" : "sdc.clusterc-1"
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : null,
+         "finaud_decision" : "NO",
+         "cpufreq" : null,
+         "disk_reservation_count" : null,
+         "drain" : "NO",
+         "core" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "myri_rate" : null,
+         "disktype" : null,
+         "myri" : null,
+         "opa_rate" : null,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : null,
+         "gpu_model" : null,
+         "nodemodel" : null,
+         "max_walltime" : null,
+         "gpu" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "cpuset" : -1,
+         "state" : "Alive",
+         "ib_count" : null,
+         "api_timestamp" : 1569605253,
+         "myri_count" : null,
+         "opa" : null,
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "ib" : null,
+         "production" : "YES",
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "mic" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "",
+         "virtual" : null,
+         "ib_rate" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "memcore" : null,
+         "switch" : null,
+         "disk" : "sdd.clusterc-1",
+         "cluster_priority" : null,
+         "memnode" : null,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/19"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/19/jobs"
+            }
+         ],
+         "id" : 19,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "ip" : null
+      },
+      {
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "drain" : "NO",
+         "core" : 17,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 0,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "id" : 20,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/20",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/20/jobs"
+            }
+         ],
+         "last_job_date" : 0
+      },
+      {
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/21",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/21/jobs"
+            }
+         ],
+         "id" : 21,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "drain" : "NO",
+         "core" : 18,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 1,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "cpucore" : 8,
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640"
+      },
+      {
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/22"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/22/jobs"
+            }
+         ],
+         "id" : 22,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 19,
+         "drain" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 2,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES"
+      },
+      {
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/23",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/23/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 23,
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "switch" : null,
+         "disk" : null,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 20,
+         "drain" : "NO",
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 3,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "besteffort" : "YES",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640"
+      },
+      {
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/24",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/24/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 24,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2",
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "drain" : "NO",
+         "core" : 21,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 4,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null
+      },
+      {
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/25",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/25/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 25,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 22,
+         "drain" : "NO",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 5,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0
+      },
+      {
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "id" : 26,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/26",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/26/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 6,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 23,
+         "drain" : "NO"
+      },
+      {
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 7,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "core" : 24,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/27"
+            },
+            {
+               "href" : "//oarapi/resources/27/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 27,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO"
+      },
+      {
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "drain" : "NO",
+         "core" : 25,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "id" : 28,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/28",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/28/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk" : null,
+         "switch" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null
+      },
+      {
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "core" : 26,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpuset" : 9,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/29"
+            },
+            {
+               "href" : "//oarapi/resources/29/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 29,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "cpuset" : 10,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "core" : 27,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/30"
+            },
+            {
+               "href" : "//oarapi/resources/30/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 30,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 28,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 11,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "ib" : "NO",
+         "production" : "YES",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/31"
+            },
+            {
+               "href" : "//oarapi/resources/31/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 31,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2"
+      },
+      {
+         "ib" : "NO",
+         "production" : "YES",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "id" : 32,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/32"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/32/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.2",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 29,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 12,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253
+      },
+      {
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "production" : "YES",
+         "ib" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/33"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/33/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 33,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 30,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 13,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES"
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 31,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 14,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/34",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/34/jobs"
+            }
+         ],
+         "id" : 34,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.2"
+      },
+      {
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 15,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "core" : 32,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "id" : 35,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/35"
+            },
+            {
+               "href" : "//oarapi/resources/35/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES"
+      },
+      {
+         "opa_rate" : null,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "nodemodel" : null,
+         "max_walltime" : null,
+         "gpu" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "cpuset" : -1,
+         "ib_count" : null,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "myri_count" : null,
+         "opa" : null,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : null,
+         "finaud_decision" : "NO",
+         "cpufreq" : null,
+         "disk_reservation_count" : null,
+         "drain" : "NO",
+         "core" : null,
+         "type" : "disk",
+         "scheduler_priority" : 0,
+         "cpu" : null,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "memcore" : null,
+         "switch" : null,
+         "disk" : "sdb.clusterc-2",
+         "cluster_priority" : null,
+         "memnode" : null,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/36"
+            },
+            {
+               "href" : "//oarapi/resources/36/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 36,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "ip" : null,
+         "ib" : null,
+         "production" : "YES",
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "mic" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : null,
+         "network_address" : "",
+         "ib_rate" : null
+      },
+      {
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "opa" : null,
+         "myri_count" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "state" : "Alive",
+         "ib_count" : null,
+         "cpuset" : -1,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : null,
+         "disktype" : null,
+         "myri" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "drain" : "NO",
+         "core" : null,
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "switch" : null,
+         "disk" : "sdc.clusterc-2",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "memcore" : null,
+         "wattmeter" : null,
+         "gpu_count" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "href" : "//oarapi/resources/37",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/37/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 37,
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "production" : "YES",
+         "ib" : null,
+         "ib_rate" : null,
+         "virtual" : null,
+         "network_address" : "",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null
+      },
+      {
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "myri_count" : null,
+         "opa" : null,
+         "api_timestamp" : 1569605253,
+         "ib_count" : null,
+         "state" : "Alive",
+         "cpuset" : -1,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "myri_rate" : null,
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "core" : null,
+         "drain" : "NO",
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "id" : 38,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/38"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/38/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "disk" : "sdd.clusterc-2",
+         "switch" : null,
+         "memcore" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "ib_rate" : null,
+         "network_address" : "",
+         "virtual" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "memcpu" : null,
+         "next_state" : "UnChanged",
+         "opa_count" : null,
+         "production" : "YES",
+         "ib" : null
+      }
+   ],
+   "api_timestamp" : 1569605253
+}
+
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_gpu.json b/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_gpu.json
new file mode 100644
index 00000000000..7bc0597f21e
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_gpu.json
@@ -0,0 +1,2446 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 2,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_quirk_cluster.json b/spec/stub_oar_properties/dump_oar_api_configured_server_quirk_cluster.json
new file mode 100644
index 00000000000..7d56c7b0f5e
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_quirk_cluster.json
@@ -0,0 +1,2978 @@
+{
+   "links" : [
+      {
+         "href" : "//oarapi/resources/details.json?limit=999999&offset=0",
+         "rel" : "self"
+      }
+   ],
+   "total" : 38,
+   "offset" : 0,
+   "items" : [
+      {
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 0,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 1,
+         "drain" : "NO",
+         "core" : 1,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/1"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/1/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 1,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 3,
+         "drain" : "NO",
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 1,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib" : "NO",
+         "production" : "YES",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "id" : 2,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/2"
+            },
+            {
+               "href" : "//oarapi/resources/2/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/3"
+            },
+            {
+               "href" : "//oarapi/resources/3/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 3,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 2,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 2
+      },
+      {
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/4"
+            },
+            {
+               "href" : "//oarapi/resources/4/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 4,
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.1",
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "switch" : null,
+         "disk" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 3,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 4,
+         "drain" : "NO",
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1"
+      },
+      {
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 5,
+         "next_finaud_decision" : "NO",
+         "cpu" : 1,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 4,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/5"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/5/jobs"
+            }
+         ],
+         "id" : 5
+      },
+      {
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpuset" : 5,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "core" : 6,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/6",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/6/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 6,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0
+      },
+      {
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/7"
+            },
+            {
+               "href" : "//oarapi/resources/7/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 7,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 7,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 6,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10
+      },
+      {
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 7,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "cpu" : 1,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "drain" : "NO",
+         "core" : 8,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "id" : 8,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/8",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/8/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/9"
+            },
+            {
+               "href" : "//oarapi/resources/9/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 9,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 9,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc"
+      },
+      {
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "disk" : null,
+         "switch" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/10",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/10/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 10,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "drain" : "NO",
+         "core" : 10,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 9,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64"
+      },
+      {
+         "cpu" : 2,
+         "next_finaud_decision" : "NO",
+         "core" : 11,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpuset" : 10,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/11"
+            },
+            {
+               "href" : "//oarapi/resources/11/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 11,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "drain" : "NO",
+         "core" : 12,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 11,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "ib" : "NO",
+         "production" : "YES",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "id" : 12,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/12",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/12/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 13,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpu" : 2,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 12,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "ib" : "NO",
+         "production" : "YES",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/13"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/13/jobs"
+            }
+         ],
+         "id" : 13,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.1"
+      },
+      {
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 13,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 14,
+         "drain" : "NO",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/14",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/14/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 14,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO"
+      },
+      {
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuset" : 14,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "core" : 15,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/15"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/15/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 15,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0
+      },
+      {
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-1.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-1.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/16",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/16/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 16,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 2,
+         "drain" : "NO",
+         "core" : 16,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuset" : 15,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253
+      },
+      {
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "ib" : null,
+         "production" : "YES",
+         "ib_rate" : null,
+         "virtual" : null,
+         "network_address" : "",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "switch" : null,
+         "disk" : "sdb.clusterc-1",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "memcore" : null,
+         "wattmeter" : null,
+         "gpu_count" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/17",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/17/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 17,
+         "last_job_date" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "core" : null,
+         "drain" : "NO",
+         "cpu" : null,
+         "next_finaud_decision" : "NO",
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "cpucore" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "myri_count" : null,
+         "opa" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "state" : "Alive",
+         "ib_count" : null,
+         "cpuset" : -1
+      },
+      {
+         "type" : "disk",
+         "scheduler_priority" : 0,
+         "core" : null,
+         "drain" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "cpuarch" : null,
+         "eth_rate" : null,
+         "ib_count" : null,
+         "state" : "Alive",
+         "cpuset" : -1,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "myri_count" : null,
+         "opa" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "ib_rate" : null,
+         "network_address" : "",
+         "virtual" : null,
+         "production" : "YES",
+         "ib" : null,
+         "opa_count" : null,
+         "memcpu" : null,
+         "next_state" : "UnChanged",
+         "memnode" : null,
+         "cluster_priority" : null,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/18"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/18/jobs"
+            }
+         ],
+         "id" : 18,
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "memcore" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "switch" : null,
+         "disk" : "sdc.clusterc-1"
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : null,
+         "finaud_decision" : "NO",
+         "cpufreq" : null,
+         "disk_reservation_count" : null,
+         "drain" : "NO",
+         "core" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "myri_rate" : null,
+         "disktype" : null,
+         "myri" : null,
+         "opa_rate" : null,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-1.fakesite.grid5000.fr",
+         "cpucore" : null,
+         "gpu_model" : null,
+         "nodemodel" : null,
+         "max_walltime" : null,
+         "gpu" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "cpuset" : -1,
+         "state" : "Alive",
+         "ib_count" : null,
+         "api_timestamp" : 1569605253,
+         "myri_count" : null,
+         "opa" : null,
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "ib" : null,
+         "production" : "YES",
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "mic" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "",
+         "virtual" : null,
+         "ib_rate" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "memcore" : null,
+         "switch" : null,
+         "disk" : "sdd.clusterc-1",
+         "cluster_priority" : null,
+         "memnode" : null,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/19"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/19/jobs"
+            }
+         ],
+         "id" : 19,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "ip" : null
+      },
+      {
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "drain" : "NO",
+         "core" : 17,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 0,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "id" : 20,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/20",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/20/jobs"
+            }
+         ],
+         "last_job_date" : 0
+      },
+      {
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/21",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/21/jobs"
+            }
+         ],
+         "id" : 21,
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "drain" : "NO",
+         "core" : 18,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 1,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "cpucore" : 8,
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640"
+      },
+      {
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/22"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/22/jobs"
+            }
+         ],
+         "id" : 22,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 19,
+         "drain" : "NO",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 2,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES"
+      },
+      {
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/23",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/23/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 23,
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "diskpath" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "switch" : null,
+         "disk" : null,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 20,
+         "drain" : "NO",
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 3,
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "besteffort" : "YES",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640"
+      },
+      {
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/24",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/24/jobs",
+               "title" : "jobs",
+               "rel" : "collection"
+            }
+         ],
+         "id" : 24,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2",
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "drain" : "NO",
+         "core" : 21,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 4,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null
+      },
+      {
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/25",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/25/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 25,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 3,
+         "next_finaud_decision" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "core" : 22,
+         "drain" : "NO",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 5,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0
+      },
+      {
+         "disk" : null,
+         "switch" : null,
+         "memcore" : 8192,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "diskpath" : null,
+         "ip" : "172.16.64.2",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "id" : 26,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/26",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/26/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "production" : "YES",
+         "ib" : "NO",
+         "ib_rate" : 0,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "mic" : "NO",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "myri_count" : 0,
+         "opa" : "NO",
+         "api_timestamp" : 1569605253,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 6,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "core" : 23,
+         "drain" : "NO"
+      },
+      {
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "api_timestamp" : 1569605253,
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 7,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "core" : 24,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "next_finaud_decision" : "NO",
+         "cpu" : 3,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/27"
+            },
+            {
+               "href" : "//oarapi/resources/27/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 27,
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "production" : "YES",
+         "ib" : "NO",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO"
+      },
+      {
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "drain" : "NO",
+         "core" : 25,
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "id" : 28,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "href" : "//oarapi/resources/28",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/28/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "disk" : null,
+         "switch" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null
+      },
+      {
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "core" : 26,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpuset" : 9,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "mic" : "NO",
+         "desktop_computing" : "NO",
+         "gpudevice" : null,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0,
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/29"
+            },
+            {
+               "href" : "//oarapi/resources/29/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 29,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null
+      },
+      {
+         "cpuset" : 10,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "core" : 27,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_job_date" : 0,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/30"
+            },
+            {
+               "href" : "//oarapi/resources/30/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 30,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "ib" : "NO",
+         "production" : "YES",
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "opa_count" : 0
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 28,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cpuset" : 11,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "ib" : "NO",
+         "production" : "YES",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/31"
+            },
+            {
+               "href" : "//oarapi/resources/31/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 31,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "ip" : "172.16.64.2"
+      },
+      {
+         "ib" : "NO",
+         "production" : "YES",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "diskpath" : null,
+         "disk" : null,
+         "switch" : null,
+         "id" : 32,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/32"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/32/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "ip" : "172.16.64.2",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 29,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "myri_rate" : 0,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : 8,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "max_walltime" : 86400,
+         "gpu" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state" : "Alive",
+         "ib_count" : 0,
+         "cpuset" : 12,
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "api_timestamp" : 1569605253
+      },
+      {
+         "ib_rate" : 0,
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : "NO",
+         "opa_count" : 0,
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "production" : "YES",
+         "ib" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "suspended_jobs" : "NO",
+         "ip" : "172.16.64.2",
+         "cluster_priority" : 201906,
+         "memnode" : 131072,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/33"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/33/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 33,
+         "switch" : null,
+         "disk" : null,
+         "diskpath" : null,
+         "memcore" : 8192,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 0,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "drain" : "NO",
+         "core" : 30,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "finaud_decision" : "NO",
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "cpufreq" : "2.1",
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "api_timestamp" : 1569605253,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "opa" : "NO",
+         "myri_count" : 0,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuset" : 13,
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "opa_rate" : 0,
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "cpucore" : 8,
+         "besteffort" : "YES"
+      },
+      {
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "core" : 31,
+         "drain" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "cpu" : 4,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : 0,
+         "disktype" : "SATA",
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "gpu_model" : null,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "eth_rate" : 10,
+         "cpuarch" : "x86_64",
+         "cpuset" : 14,
+         "state" : "Alive",
+         "ib_count" : 0,
+         "api_timestamp" : 1569605253,
+         "myri_count" : 0,
+         "opa" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster" : "clusterc",
+         "production" : "YES",
+         "ib" : "NO",
+         "opa_count" : 0,
+         "next_state" : "UnChanged",
+         "memcpu" : 65536,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "switch" : null,
+         "disk" : null,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/34",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/34/jobs"
+            }
+         ],
+         "id" : 34,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "deploy" : "NO",
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.2"
+      },
+      {
+         "opa" : "NO",
+         "myri_count" : 0,
+         "cluster" : "clusterc",
+         "cputype" : "Intel Xeon Silver 4110",
+         "api_timestamp" : 1569605253,
+         "cpuset" : 15,
+         "ib_count" : 0,
+         "state" : "Alive",
+         "cpuarch" : "x86_64",
+         "eth_rate" : 10,
+         "nodemodel" : "Dell PowerEdge T640",
+         "gpu" : null,
+         "max_walltime" : 86400,
+         "besteffort" : "YES",
+         "maintenance" : "NO",
+         "cpucore" : 8,
+         "gpu_model" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "opa_rate" : 0,
+         "state_num" : 1,
+         "myri" : "NO",
+         "disktype" : "SATA",
+         "myri_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "cpu" : 4,
+         "core" : 32,
+         "drain" : "NO",
+         "scheduler_priority" : 0,
+         "type" : "default",
+         "cpufreq" : "2.1",
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "finaud_decision" : "NO",
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : "172.16.64.2",
+         "suspended_jobs" : "NO",
+         "available_upto" : 2147483647,
+         "deploy" : "NO",
+         "id" : 35,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterc-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/35"
+            },
+            {
+               "href" : "//oarapi/resources/35/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : 131072,
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "switch" : null,
+         "gpu_count" : 0,
+         "wattmeter" : "MULTIPLE",
+         "memcore" : 8192,
+         "diskpath" : null,
+         "virtual" : "ivt",
+         "network_address" : "clusterc-2.fakesite.grid5000.fr",
+         "ib_rate" : 0,
+         "mic" : "NO",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "memcpu" : 65536,
+         "next_state" : "UnChanged",
+         "opa_count" : 0,
+         "ib" : "NO",
+         "production" : "YES"
+      },
+      {
+         "opa_rate" : null,
+         "state_num" : 1,
+         "besteffort" : "YES",
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "nodemodel" : null,
+         "max_walltime" : null,
+         "gpu" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "cpuset" : -1,
+         "ib_count" : null,
+         "state" : "Alive",
+         "api_timestamp" : 1569605253,
+         "myri_count" : null,
+         "opa" : null,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "eth_count" : null,
+         "finaud_decision" : "NO",
+         "cpufreq" : null,
+         "disk_reservation_count" : null,
+         "drain" : "NO",
+         "core" : null,
+         "type" : "disk",
+         "scheduler_priority" : 0,
+         "cpu" : null,
+         "next_finaud_decision" : "NO",
+         "myri_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "memcore" : null,
+         "switch" : null,
+         "disk" : "sdb.clusterc-2",
+         "cluster_priority" : null,
+         "memnode" : null,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/36"
+            },
+            {
+               "href" : "//oarapi/resources/36/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "id" : 36,
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "available_upto" : 0,
+         "deploy" : "YES",
+         "ip" : null,
+         "ib" : null,
+         "production" : "YES",
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "mic" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "virtual" : null,
+         "network_address" : "",
+         "ib_rate" : null
+      },
+      {
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "state_num" : 1,
+         "opa_rate" : null,
+         "gpu_model" : null,
+         "maintenance" : "NO",
+         "cpucore" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "besteffort" : "YES",
+         "api_timestamp" : 1569605253,
+         "cluster" : "clusterc",
+         "cputype" : null,
+         "opa" : null,
+         "myri_count" : null,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "state" : "Alive",
+         "ib_count" : null,
+         "cpuset" : -1,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "expiry_date" : 0,
+         "last_available_upto" : 0,
+         "myri_rate" : null,
+         "disktype" : null,
+         "myri" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "drain" : "NO",
+         "core" : null,
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "switch" : null,
+         "disk" : "sdc.clusterc-2",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "memcore" : null,
+         "wattmeter" : null,
+         "gpu_count" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "ip" : null,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "href" : "//oarapi/resources/37",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/37/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "id" : 37,
+         "opa_count" : null,
+         "next_state" : "UnChanged",
+         "memcpu" : null,
+         "production" : "YES",
+         "ib" : null,
+         "ib_rate" : null,
+         "virtual" : null,
+         "network_address" : "",
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null
+      },
+      {
+         "cputype" : null,
+         "cluster" : "clusterc",
+         "myri_count" : null,
+         "opa" : null,
+         "api_timestamp" : 1569605253,
+         "ib_count" : null,
+         "state" : "Alive",
+         "cpuset" : -1,
+         "eth_rate" : null,
+         "cpuarch" : null,
+         "gpu" : null,
+         "max_walltime" : null,
+         "nodemodel" : null,
+         "host" : "clusterc-2.fakesite.grid5000.fr",
+         "maintenance" : "NO",
+         "gpu_model" : null,
+         "cpucore" : null,
+         "besteffort" : "YES",
+         "state_num" : 1,
+         "opa_rate" : null,
+         "myri" : null,
+         "disktype" : null,
+         "myri_rate" : null,
+         "next_finaud_decision" : "NO",
+         "cpu" : null,
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "core" : null,
+         "drain" : "NO",
+         "disk_reservation_count" : null,
+         "cpufreq" : null,
+         "finaud_decision" : "NO",
+         "eth_count" : null,
+         "last_available_upto" : 0,
+         "expiry_date" : 0,
+         "ip" : null,
+         "deploy" : "YES",
+         "available_upto" : 0,
+         "suspended_jobs" : "NO",
+         "id" : 38,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node",
+               "rel" : "member"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/38"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/38/jobs"
+            }
+         ],
+         "last_job_date" : 0,
+         "memnode" : null,
+         "cluster_priority" : null,
+         "disk" : "sdd.clusterc-2",
+         "switch" : null,
+         "memcore" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "ib_rate" : null,
+         "network_address" : "",
+         "virtual" : null,
+         "gpudevice" : null,
+         "desktop_computing" : "NO",
+         "mic" : null,
+         "memcpu" : null,
+         "next_state" : "UnChanged",
+         "opa_count" : null,
+         "production" : "YES",
+         "ib" : null
+      }
+   ],
+   "api_timestamp" : 1569605253
+}
+
-- 
GitLab


From 0bd499cb3061797288b8e3d4437e481b543c6eda Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 5 Oct 2019 10:24:30 +0200
Subject: [PATCH 25/57] Rename cpuset_mapping to
 architecture/cpu_core_numbering

---
 lib/refrepo/gen/oar-properties.rb | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 72f9040d860..43988911279 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -9,9 +9,6 @@ class MissingProperty < StandardError; end
 
 MiB = 1024**2
 
-# CPU distribution can be: round-robin | continuous
-DEFAULT_CPUSET_MAPPING = "continuous"
-
 # GPU distribution can be: round-robin | continuous
 DEFAULT_GPUSET_MAPPING = "continuous"
 
@@ -1072,7 +1069,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     gpu_count = first_node.key?("gpu_devices") ? first_node["gpu_devices"].length : 0
 
     cpu_model = "#{first_node['processor']['model']} #{first_node['processor']['version']}"
-    cpuset_mapping = first_node.key?("cpuset_mapping") ? first_node["cpuset_mapping"] : DEFAULT_CPUSET_MAPPING
+    core_numbering = first_node['architecture']['cpu_core_numbering']
     # Detect how 'GPUSETs' are distributed over CPUs/GPUs of servers of this cluster
     gpuset_mapping = DEFAULT_GPUSET_MAPPING
 
@@ -1206,7 +1203,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
         gpu_idx += 1
       end
 
-      if cpuset_mapping == 'continuous'
+      if core_numbering == 'continuous'
         cpuset = 0
       end
 
@@ -1278,7 +1275,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
           ############################################
           # (2-d) Associate a cpuset to each core
           ############################################
-          if cpuset_mapping == 'continuous'
+          if core_numbering == 'continuous'
             row[:cpuset] = cpuset
           else
             # CPUSETs starts at 0
@@ -1310,7 +1307,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
           core_idx += 1
 
-          if cpuset_mapping == 'continuous'
+          if core_numbering == 'continuous'
             cpuset += 1
           end
 
-- 
GitLab


From 06af0995c9236b5da62912d4cccbb824e17d81f2 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 5 Oct 2019 10:24:58 +0200
Subject: [PATCH 26/57] Adjust spec files

---
 .../load_data_hierarchy_stubbed_data.json     | 10 ++++----
 ...data_hierarchy_stubbed_data_with_disk.json | 16 ++++++-------
 ...ta_hierarchy_stubbed_data_without_gpu.json | 24 +++++++++----------
 3 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
index 4d2e2e5f805..8be0817345c 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
@@ -9,7 +9,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -21,7 +22,6 @@
                 "name": "PowerEdge T640",
                 "serial": "FL1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -216,7 +216,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -228,7 +229,6 @@
                 "name": "PowerEdge T640",
                 "serial": "9L1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -812,4 +812,4 @@
   },
   "type": "grid",
   "uid": "grid5000"
-}
\ No newline at end of file
+}
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
index 4d67c8d2138..b5e6f7e00b0 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
@@ -9,7 +9,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -21,7 +22,6 @@
                 "name": "PowerEdge T640",
                 "serial": "FL1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -230,7 +230,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -242,7 +243,6 @@
                 "name": "PowerEdge T640",
                 "serial": "9L1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -464,7 +464,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -476,7 +477,6 @@
                 "name": "PowerEdge T640",
                 "serial": "9L1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -724,7 +724,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -736,7 +737,6 @@
                 "name": "PowerEdge T640",
                 "serial": "FL1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
index 88f43f9bb15..c2f88457f0b 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
@@ -9,7 +9,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -21,7 +22,6 @@
                 "name": "PowerEdge T640",
                 "serial": "FL1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -230,7 +230,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -242,7 +243,6 @@
                 "name": "PowerEdge T640",
                 "serial": "9L1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -464,7 +464,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -476,7 +477,6 @@
                 "name": "PowerEdge T640",
                 "serial": "FL1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -686,7 +686,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -698,7 +699,6 @@
                 "name": "PowerEdge T640",
                 "serial": "9L1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -921,7 +921,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -933,7 +934,6 @@
                 "name": "PowerEdge T640",
                 "serial": "9L1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
@@ -1181,7 +1181,8 @@
                 "nb_cores": 16,
                 "nb_procs": 2,
                 "nb_threads": 32,
-                "platform_type": "x86_64"
+                "platform_type": "x86_64",
+                "cpu_core_numbering": "continuous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -1193,7 +1194,6 @@
                 "name": "PowerEdge T640",
                 "serial": "FL1CBX2"
               },
-              "cpuset_mapping": "continuous",
               "gpu": {
                 "gpu": true,
                 "gpu_cores": 17408,
-- 
GitLab


From 55f0982f17afbf77fe8e1e07164a37d95dfc0772 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 11 Oct 2019 16:35:29 +0200
Subject: [PATCH 27/57] remove 'gpuset_mapping' property

---
 lib/refrepo/gen/oar-properties.rb | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 43988911279..76bc1f50529 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -9,9 +9,6 @@ class MissingProperty < StandardError; end
 
 MiB = 1024**2
 
-# GPU distribution can be: round-robin | continuous
-DEFAULT_GPUSET_MAPPING = "continuous"
-
 ############################################
 # Functions related to the "TABLE" operation
 ############################################
@@ -1070,8 +1067,6 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
     cpu_model = "#{first_node['processor']['model']} #{first_node['processor']['version']}"
     core_numbering = first_node['architecture']['cpu_core_numbering']
-    # Detect how 'GPUSETs' are distributed over CPUs/GPUs of servers of this cluster
-    gpuset_mapping = DEFAULT_GPUSET_MAPPING
 
     ############################################
     # (2-b) Detect existing resource_ids and {CPU, CORE, CPUSET, GPU}'s IDs
@@ -1288,11 +1283,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
           # (2-e) [if cluster with GPU] Associate a gpuset to each core
           ############################################
           if not numa_gpus.empty?
-            if gpuset_mapping == 'continuous'
-              gpu_idx = core_index0 / (phys_rsc_map["core"][:per_server_count] / numa_gpus.length)
-            else
-              gpu_idx = core_index0 % numa_gpus.length
-            end
+            gpu_idx = core_index0 / (phys_rsc_map["core"][:per_server_count] / numa_gpus.length)
 
             selected_gpu = numa_gpus[gpu_idx]
             if selected_gpu.nil?
-- 
GitLab


From 04f946026fc721bcc5ea38292687032c8a73c649 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 11 Oct 2019 16:36:20 +0200
Subject: [PATCH 28/57] add a spec test for cluster with 'round-robin' cpuset
 distributions

---
 lib/refrepo/gen/oar-properties.rb             |   6 +-
 spec/oar_properties_spec.rb                   | 213 +++++
 .../load_data_hierarchy_stubbed_data.json     |   4 +-
 ...rchy_stubbed_data_round_robin_cpusets.json | 815 ++++++++++++++++++
 ...data_hierarchy_stubbed_data_with_disk.json |   8 +-
 ...ta_hierarchy_stubbed_data_without_gpu.json |  12 +-
 6 files changed, 1043 insertions(+), 15 deletions(-)
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_round_robin_cpusets.json

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 76bc1f50529..72f317a9824 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1198,7 +1198,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
         gpu_idx += 1
       end
 
-      if core_numbering == 'continuous'
+      if core_numbering == 'contiguous'
         cpuset = 0
       end
 
@@ -1270,7 +1270,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
           ############################################
           # (2-d) Associate a cpuset to each core
           ############################################
-          if core_numbering == 'continuous'
+          if core_numbering == 'contiguous'
             row[:cpuset] = cpuset
           else
             # CPUSETs starts at 0
@@ -1298,7 +1298,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
           core_idx += 1
 
-          if core_numbering == 'continuous'
+          if core_numbering == 'contiguous'
             cpuset += 1
           end
 
diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index cf1e8cf0fc3..6bacb9fbe8a 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -489,6 +489,219 @@ TXT
     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' -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' -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' -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' -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' -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' -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' -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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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 !
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "opa_count", 0]
+    ["+", "opa_rate", 0]
+    ["+", "production", "YES"]
+    ["+", "switch", "gw-fakesite"]
+    ["+", "virtual", "ivt"]
+    ["+", "wattmeter", "MULTIPLE"]
+      TXT
+
+      expected_clustera2_diff = <<-TXT
+  clustera-2: new node !
+    ["+", "cluster", "clustera"]
+    ["+", "cluster_priority", 201906]
+    ["+", "cpuarch", "x86_64"]
+    ["+", "cpucore", 8]
+    ["+", "cpufreq", "2.1"]
+    ["+", "cputype", "Intel Xeon Silver 4110"]
+    ["+", "disk_reservation_count", 0]
+    ["+", "disktype", "SATA"]
+    ["+", "eth_count", 1]
+    ["+", "eth_rate", 10]
+    ["+", "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", "NO"]
+    ["+", "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 '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")
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
index 8be0817345c..51dc5cd1ad7 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data.json
@@ -10,7 +10,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -217,7 +217,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_round_robin_cpusets.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_round_robin_cpusets.json
new file mode 100644
index 00000000000..255db98d155
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_round_robin_cpusets.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": "round-robin"
+              },
+              "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": "round-robin"
+              },
+              "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/mediawiki/index.php/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_with_disk.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
index b5e6f7e00b0..5361202d115 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_disk.json
@@ -10,7 +10,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -231,7 +231,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -465,7 +465,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -725,7 +725,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
index c2f88457f0b..0e861c7914d 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_without_gpu.json
@@ -10,7 +10,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -231,7 +231,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -465,7 +465,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -687,7 +687,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -922,7 +922,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
@@ -1182,7 +1182,7 @@
                 "nb_procs": 2,
                 "nb_threads": 32,
                 "platform_type": "x86_64",
-                "cpu_core_numbering": "continuous"
+                "cpu_core_numbering": "contiguous"
               },
               "bios": {
                 "release_date": "06/14/2019",
-- 
GitLab


From 02a871fb6e9686c9fca01115442ae4dcaf14de41 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 17 Oct 2019 17:59:10 +0200
Subject: [PATCH 29/57] fix for sagittaire-8

---
 lib/refrepo/gen/oar-properties.rb | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 72f317a9824..e25bb50a4be 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1183,6 +1183,10 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
       node_description_default_properties = site_properties["default"][name]
 
+      if node_description.nil?
+        next
+      end
+
       # Detect GPU configuration of nodes
       if node_description.key? "gpu_devices"
         gpus = node_description["gpu_devices"]
-- 
GitLab


From 778803fca54e239645765f3e31c99e1f15db8416 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 18 Oct 2019 14:21:56 +0200
Subject: [PATCH 30/57] change the format used when displaying differences
 (more detailed description of resource, and suggestion of a command that
 correct the difference)

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

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index e25bb50a4be..bf8a8a76e39 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -953,12 +953,15 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
           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)
-                  puts "Error: resource #{corresponding_resource[0]["id"]} is associated to #{value.upcase} (#{corresponding_resource[0][value]}), while I computed that it should be associated to #{row[key]}"
-                  fix_cmds += %Q{
-oarnodesetting --sql "resource_id='#{corresponding_resource[0]["id"]}' AND type='default'" -p #{value}=#{row[key]}}
+                  fix_cmd = <<-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}: API gives #{resc[value]}, generator wants #{row[key]}. To fix this:
+oarnodesetting --sql "resource_id='#{corresponding_resource[0]["id"]}' AND type='default'" -p #{value}=#{row[key]}
+TXT
+                  fix_cmds += "#{fix_cmd}"
                 end
               end
             else
@@ -978,6 +981,7 @@ oarnodesetting --sql "resource_id='#{corresponding_resource[0]["id"]}' AND type=
         puts "# You may execute the following commands to fix "
         puts "# some resources of the OAR database"
         puts "################################################"
+        puts ""
         puts fix_cmds
       end
 
@@ -1040,7 +1044,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
     cluster_desc_from_input_files = data_hierarchy['sites'][site_name]['clusters'][cluster_name]
     cluster_nodes = cluster_desc_from_input_files['nodes']
-    
+
     node_count = cluster_nodes.length
 
     cluster_resources = site_resources
-- 
GitLab


From 1638ab1fa79b7589506a413840ad7c574b6b6eef Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 18 Oct 2019 14:22:17 +0200
Subject: [PATCH 31/57] use the new format for DIFF action

---
 spec/oar_properties_spec.rb | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 6bacb9fbe8a..0b03729378a 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1768,7 +1768,8 @@ TXT
       }
 
       expected_output = <<-TXT
-Error: resource 9 is associated to GPU (2), while I computed that it should be associated to 3
+# 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: API gives 2, generator wants 3. To fix this:
+oarnodesetting --sql "resource_id='9' AND type='default'" -p gpu=3
 TXT
       expected_output2 = <<-TXT
 oarnodesetting --sql "resource_id='9' AND type='default'" -p gpu=3
-- 
GitLab


From c8ebf7fb7691ba7d761a421de2f174862de8f3b0 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Fri, 18 Oct 2019 17:15:17 +0200
Subject: [PATCH 32/57] generator generate an error only when API ressources
 count does not match API

---
 lib/refrepo/gen/oar-properties.rb | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index bf8a8a76e39..9ad68567416 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1157,7 +1157,10 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
           end
         end
 
-        raise "#{physical_resource} has an unexpected number of resources (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count})"
+        if ["cpu", "core"].include? physical_resource
+          puts("#{physical_resource} has an unexpected number of resources (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count})")
+          return 1
+        end
       end
 
       variables[:current_ids] = phys_rsc_ids
-- 
GitLab


From c3b96a5f3178a510d0c221aed8a30e801452b1a3 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 23 Oct 2019 01:07:29 +0200
Subject: [PATCH 33/57] Diff action return an exit code

---
 lib/refrepo/gen/oar-properties.rb | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 9ad68567416..f0f18e0a4b7 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -800,6 +800,7 @@ def get_oar_properties_from_oar(options)
 end
 
 def do_diff(options, generated_hierarchy, refrepo_properties)
+  ret = 0
 
   properties = {
     'ref' => refrepo_properties,
@@ -987,6 +988,8 @@ TXT
 
     end # if options[:diff]
   end
+
+  return ret
 end
 
 
@@ -1388,6 +1391,8 @@ def generate_oar_properties(options)
   # Output generated information
   ############################################
 
+  ret = 0
+
   # DO=table
   if options.key? :table and options[:table]
     export_rows_as_formated_line(generated_hierarchy)
@@ -1401,7 +1406,7 @@ def generate_oar_properties(options)
 
   # Do=Diff
   if options.key? :diff and options[:diff]
-    do_diff(options, generated_hierarchy, refrepo_properties)
+    ret = do_diff(options, generated_hierarchy, refrepo_properties)
   end
 
   # Do=update
@@ -1412,7 +1417,7 @@ def generate_oar_properties(options)
     run_commands_via_ssh(cmds, options) if prompt.downcase == 'y'
   end
 
-  return 0
+  return ret
 end
 
 end
-- 
GitLab


From 50c001df695869fe1a95ebd1560c9611b1e9dee6 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 23 Oct 2019 01:08:26 +0200
Subject: [PATCH 34/57] add more spec tests for the generator to increase
 coverage

---
 spec/oar_properties_spec.rb                   |  290 ++
 ...pi_configured_server_missing_property.json | 2434 ++++++++++++++++
 ...r_api_configured_server_wrong_vartype.json | 2446 +++++++++++++++++
 ...ed_data_missing_main_network_property.json |  744 +++++
 ...hierarchy_stubbed_data_wattmeters_nil.json |  813 ++++++
 ...hy_stubbed_data_wattmeters_variations.json |  815 ++++++
 6 files changed, 7542 insertions(+)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_missing_property.json
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_wrong_vartype.json
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_missing_main_network_property.json
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_nil.json
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_variations.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 0b03729378a..b144017dabf 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1783,4 +1783,294 @@ TXT
       expect(generator_output[:stdout]).to include(expected_output2)
     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)
+    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 'Fixnum' 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)
+    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)
+    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)
+    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",
+      "virtual": "ivt",
+      "cpuarch": "x86_64",
+      "cpucore": 8,
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "disktype": "SATA",
+      "eth_count": 1,
+      "eth_rate": 10,
+      "ib_count": 0,
+      "ib_rate": 0,
+      "ib": "NO",
+      "opa_count": 0,
+      "opa_rate": 0,
+      "opa": "NO",
+      "myri_count": 0,
+      "myri_rate": 0,
+      "myri": "NO",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "memnode": 131072,
+      "gpu_count": 4,
+      "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)
+    end
+  end
 end
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_missing_property.json b/spec/stub_oar_properties/dump_oar_api_configured_server_missing_property.json
new file mode 100644
index 00000000000..4d392db5e2a
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_missing_property.json
@@ -0,0 +1,2434 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_wrong_vartype.json b/spec/stub_oar_properties/dump_oar_api_configured_server_wrong_vartype.json
new file mode 100644
index 00000000000..9c21cae959e
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_wrong_vartype.json
@@ -0,0 +1,2446 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": "10",
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": "10",
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": "10",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_missing_main_network_property.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_missing_main_network_property.json
new file mode 100644
index 00000000000..2d2c4330840
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_missing_main_network_property.json
@@ -0,0 +1,744 @@
+{
+  "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": [],
+              "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/mediawiki/index.php/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_wattmeters_nil.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_nil.json
new file mode 100644
index 00000000000..f6f7a47abf8
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_nil.json
@@ -0,0 +1,813 @@
+{
+  "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": {
+              },
+              "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": {
+              },
+              "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/mediawiki/index.php/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_wattmeters_variations.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_variations.json
new file mode 100644
index 00000000000..8242e474aa4
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_wattmeters_variations.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": "true"
+              },
+              "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": "false"
+              },
+              "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/mediawiki/index.php/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"
+}
-- 
GitLab


From 877e9ba4a9f7dddcc2c964c3d42c3ccb409a7558 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 24 Oct 2019 17:48:10 +0200
Subject: [PATCH 35/57] spec test for DIFF action does not expect OAR commands
 to be in the output

---
 spec/oar_properties_spec.rb | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index b144017dabf..947ed7e3673 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1768,11 +1768,7 @@ TXT
       }
 
       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: API gives 2, generator wants 3. To fix this:
-oarnodesetting --sql "resource_id='9' AND type='default'" -p gpu=3
-TXT
-      expected_output2 = <<-TXT
-oarnodesetting --sql "resource_id='9' AND type='default'" -p gpu=3
+# 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: API gives 2, generator wants 3.
 TXT
 
       generator_output = capture do
@@ -1780,7 +1776,6 @@ TXT
       end
 
       expect(generator_output[:stdout]).to include(expected_output)
-      expect(generator_output[:stdout]).to include(expected_output2)
     end
   end
 
-- 
GitLab


From 83cd39983b01d44b9d61a94a9314f87497ed00e7 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 24 Oct 2019 17:49:26 +0200
Subject: [PATCH 36/57] implement an other spec test for DIFF action

---
 spec/oar_properties_spec.rb                   |   87 +
 ...ar_api_configured_server_to_test_diff.json | 2446 +++++++++++++++++
 2 files changed, 2533 insertions(+)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_to_test_diff.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 947ed7e3673..acd2147afbc 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -2068,4 +2068,91 @@ Properties that need to be created on the fakesite server: ib_rate
       expect(generator_output[:stdout]).to include(expected_output)
     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
+  end
+
+  context 'interracting with a configured OAR server (misconfigured to test the "DIFF" action)' do
+    before do
+      prepare_stubs("dump_oar_api_configured_server_to_test_diff.json", "load_data_hierarchy_stubbed_data.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 => false,
+        :print => false,
+        :update => false,
+        :diff => true,
+        :site => "fakesite",
+        :clusters => ["clustera"],
+        :verbose => 2
+      }
+
+      expected_output = <<-TXT
+  clustera-2:
+    ["~", "eth_rate", 100, 10]
+    ["~", "gpu_count", 2, 4]
+      TXT
+
+      expected_output2 = <<-TXT
+# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=2 gpu=2 gpudevice=1) has a mismatch for ressource CPUSET: API gives 2, generator wants 3.
+# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=2 gpu=2 gpudevice=1) has a mismatch for ressource GPU: API gives 2, generator wants 1.
+# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=2 gpu=2 gpudevice=1) has a mismatch for ressource GPUDEVICE: API gives 1, generator wants 0.
+      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)
+    end
+  end
 end
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_to_test_diff.json b/spec/stub_oar_properties/dump_oar_api_configured_server_to_test_diff.json
new file mode 100644
index 00000000000..838f500cdc7
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_to_test_diff.json
@@ -0,0 +1,2446 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 2,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 2,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 100,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
-- 
GitLab


From 00e67539308d4afff9506a88802e9a6b3a376f4d Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 24 Oct 2019 18:17:46 +0200
Subject: [PATCH 37/57] take into account the 'reservable' property of
 gpudevices

---
 lib/refrepo/gen/oar-properties.rb | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index f0f18e0a4b7..9ad03139e06 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -959,8 +959,7 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
               {: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)
                   fix_cmd = <<-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}: API gives #{resc[value]}, generator wants #{row[key]}. To fix this:
-oarnodesetting --sql "resource_id='#{corresponding_resource[0]["id"]}' AND type='default'" -p #{value}=#{row[key]}
+# 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}: API gives #{resc[value]}, generator wants #{row[key]}.
 TXT
                   fix_cmds += "#{fix_cmd}"
                 end
@@ -1199,7 +1198,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
       # Detect GPU configuration of nodes
       if node_description.key? "gpu_devices"
-        gpus = node_description["gpu_devices"]
+        gpus = node_description["gpu_devices"].select{|k ,v| v.fetch("reservable", true)}
       else
         gpus = []
       end
@@ -1241,7 +1240,9 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
         ############################################
         numa_gpus = []
         if node_description.key? "gpu_devices"
-          numa_gpus = node_description["gpu_devices"].map {|v| v[1]}.select {|v| v['cpu_affinity'] == cpu_index0}
+          numa_gpus = node_description["gpu_devices"]
+                        .map {|v| v[1]}
+                        .select {|v| v['cpu_affinity'] == cpu_index0 and v.fetch("reservable", true)}
         end
 
         ############################################
-- 
GitLab


From 1a4835392bb8ca33f2f060d0b0ab59d52c33c841 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 24 Oct 2019 18:17:58 +0200
Subject: [PATCH 38/57] implement a spec test for non reservable GPUs

---
 spec/oar_properties_spec.rb                   |  43 -
 ...stubbed_data_with_non_reservable_gpus.json | 823 ++++++++++++++++++
 2 files changed, 823 insertions(+), 43 deletions(-)
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index acd2147afbc..e1cc97fc453 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -2112,47 +2112,4 @@ GeForce RTX 2080 Ti
     end
   end
 
-  context 'interracting with a configured OAR server (misconfigured to test the "DIFF" action)' do
-    before do
-      prepare_stubs("dump_oar_api_configured_server_to_test_diff.json", "load_data_hierarchy_stubbed_data.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 => false,
-        :print => false,
-        :update => false,
-        :diff => true,
-        :site => "fakesite",
-        :clusters => ["clustera"],
-        :verbose => 2
-      }
-
-      expected_output = <<-TXT
-  clustera-2:
-    ["~", "eth_rate", 100, 10]
-    ["~", "gpu_count", 2, 4]
-      TXT
-
-      expected_output2 = <<-TXT
-# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=2 gpu=2 gpudevice=1) has a mismatch for ressource CPUSET: API gives 2, generator wants 3.
-# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=2 gpu=2 gpudevice=1) has a mismatch for ressource GPU: API gives 2, generator wants 1.
-# Error: Resource 4 (host=clustera-1.fakesite.grid5000.fr cpu=1 core=4 cpuset=2 gpu=2 gpudevice=1) has a mismatch for ressource GPUDEVICE: API gives 1, generator wants 0.
-      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)
-    end
-  end
 end
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json
new file mode 100644
index 00000000000..67af7cf702f
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json
@@ -0,0 +1,823 @@
+{
+  "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",
+                  "reservable": false
+                },
+                "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",
+                  "reservable": false
+                },
+                "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",
+                  "reservable": false
+                },
+                "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",
+                  "reservable": false
+                }
+              },
+              "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",
+                  "reservable": false
+                },
+                "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",
+                  "reservable": false
+                },
+                "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",
+                  "reservable": false
+                },
+                "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",
+                  "reservable": false
+                }
+              },
+              "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/mediawiki/index.php/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"
+}
-- 
GitLab


From 3ec4afdb4ba9d63649bc0efebf72c7e01be86209 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 4 Nov 2019 18:01:00 +0100
Subject: [PATCH 39/57] update specs

---
 spec/oar_properties_spec.rb                   |   30 +-
 ...rver_misconfigured_non_reservable_gpu.json | 2446 +++++++++++++++++
 ...stubbed_data_with_non_reservable_gpus.json |   16 +-
 3 files changed, 2469 insertions(+), 23 deletions(-)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_non_reservable_gpu.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index e1cc97fc453..3903dee5289 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1485,16 +1485,16 @@ 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
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=0 -p gpudevice= -p gpu_model=
 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
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=0 -p gpudevice= -p gpu_model=
 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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
@@ -1637,16 +1637,16 @@ 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=3 -p cpuset=1
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -p cpuset=2
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='1' AND type='default'" -p cpu=1 -p core=1 -p cpuset=0 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=3 -p cpuset=1 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -p cpuset=2 -p gpu=0 -p gpudevice= -p gpu_model=
 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
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='32' AND type='default'" -p cpu=4 -p core=29 -p cpuset=12 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=0 -p gpudevice= -p gpu_model=
+oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=0 -p gpudevice= -p gpu_model=
 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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
@@ -1768,7 +1768,7 @@ TXT
       }
 
       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: API gives 2, generator wants 3.
+# 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
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_non_reservable_gpu.json b/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_non_reservable_gpu.json
new file mode 100644
index 00000000000..7bc0597f21e
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_misconfigured_non_reservable_gpu.json
@@ -0,0 +1,2446 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 2,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json
index 67af7cf702f..d9050ae73b4 100644
--- a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_with_non_reservable_gpus.json
@@ -38,7 +38,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.17.00.B2",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 },
                 "nvidia1": {
                   "cpu_affinity": 0,
@@ -48,7 +48,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.17.00.B2",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 },
                 "nvidia2": {
                   "cpu_affinity": 1,
@@ -58,7 +58,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.0B.40.09",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 },
                 "nvidia3": {
                   "cpu_affinity": 1,
@@ -68,7 +68,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.17.00.B2",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 }
               },
               "main_memory": {
@@ -249,7 +249,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.17.00.B2",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 },
                 "nvidia1": {
                   "cpu_affinity": 0,
@@ -259,7 +259,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.0B.40.09",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 },
                 "nvidia2": {
                   "cpu_affinity": 1,
@@ -269,7 +269,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.0B.40.09",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 },
                 "nvidia3": {
                   "cpu_affinity": 1,
@@ -279,7 +279,7 @@
                   "power_default_limit": "250.00 W",
                   "vbios_version": "90.02.17.00.AC",
                   "vendor": "Nvidia",
-                  "reservable": false
+                  "reservation": false
                 }
               },
               "main_memory": {
-- 
GitLab


From c086128dd59468b030cb1ba825934c5951f82d86 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 4 Nov 2019 18:02:14 +0100
Subject: [PATCH 40/57] reservable -> reservation

---
 lib/refrepo/gen/oar-properties.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 9ad03139e06..2697b14dd49 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1198,7 +1198,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
       # Detect GPU configuration of nodes
       if node_description.key? "gpu_devices"
-        gpus = node_description["gpu_devices"].select{|k ,v| v.fetch("reservable", true)}
+        gpus = node_description["gpu_devices"].select{|k ,v| v.fetch("reservation", true)}
       else
         gpus = []
       end
@@ -1242,7 +1242,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
         if node_description.key? "gpu_devices"
           numa_gpus = node_description["gpu_devices"]
                         .map {|v| v[1]}
-                        .select {|v| v['cpu_affinity'] == cpu_index0 and v.fetch("reservable", true)}
+                        .select {|v| v['cpu_affinity'] == cpu_index0 and v.fetch("reservation", true)}
         end
 
         ############################################
-- 
GitLab


From e926916097d0331174119a88166b7e8856108257 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 4 Nov 2019 18:03:11 +0100
Subject: [PATCH 41/57] [DIFF] show empty character when null value is expected
 by generator

---
 lib/refrepo/gen/oar-properties.rb | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 2697b14dd49..02a0f1db0a2 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -958,8 +958,12 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
 
               {: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 == ""
+                    expected_value = "ø"
+                  end
                   fix_cmd = <<-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}: API gives #{resc[value]}, generator wants #{row[key]}.
+# 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
                   fix_cmds += "#{fix_cmd}"
                 end
-- 
GitLab


From fd6c8e012e41cf0ede36a6306fef5350f0399025 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 4 Nov 2019 18:03:39 +0100
Subject: [PATCH 42/57] input -> data

---
 lib/refrepo/gen/oar-properties.rb | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 02a0f1db0a2..46f6c2b8ac4 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1000,7 +1000,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
 
   # This function works as follow:
   # (1) Initialization
-  #    (a) Load the local data contained in YAML input files
+  #    (a) Load the local data contained in JSON data files
   #    (b) Handle the program arguments (detects which site and which clusters
   #        are targeted), and what action is requested
   #    (c) Fetch the OAR properties of the requested site
@@ -1048,8 +1048,8 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     cpu_idx = 0
     core_idx = 0
 
-    cluster_desc_from_input_files = data_hierarchy['sites'][site_name]['clusters'][cluster_name]
-    cluster_nodes = cluster_desc_from_input_files['nodes']
+    cluster_desc_from_data_files = data_hierarchy['sites'][site_name]['clusters'][cluster_name]
+    cluster_nodes = cluster_desc_from_data_files['nodes']
 
     node_count = cluster_nodes.length
 
@@ -1057,7 +1057,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
                             .select{|r| r["cluster"] == cluster_name}
                             .select{|r| cluster_nodes.include?(r["host"].split(".")[0])}
 
-    first_node = cluster_desc_from_input_files['nodes'].first[1]
+    first_node = cluster_desc_from_data_files['nodes'].first[1]
 
     # Some clusters such as graphite have a different organisation:
     # for example, graphite-1 is organised as follow:
@@ -1192,7 +1192,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
       name = nodes_names[node_index0][:name]
       fqdn = nodes_names[node_index0][:fqdn]
 
-      node_description = cluster_desc_from_input_files["nodes"][name]
+      node_description = cluster_desc_from_data_files["nodes"][name]
 
       node_description_default_properties = site_properties["default"][name]
 
-- 
GitLab


From b93b562c9aba15ffe111e52b922570d43fa25bc3 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 4 Nov 2019 18:04:01 +0100
Subject: [PATCH 43/57] when no GPUs, set gpu=0

---
 lib/refrepo/gen/oar-properties.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 46f6c2b8ac4..8007650d8ed 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -247,7 +247,7 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       else
         # Update the resource
         if gpu == ''
-          result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset}\n"
+          result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset} -p gpu=0 -p gpudevice= -p gpu_model=\n"
         else
           result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset} -p gpu=#{gpu} -p gpu_model='#{gpumodel}' -p gpudevice=#{gpudevice} # This GPU is mapped on #{gpudevicepath}\n"
         end
-- 
GitLab


From 04e122822d3631019bc167d52a43e575bc0904d9 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 4 Nov 2019 18:05:29 +0100
Subject: [PATCH 44/57] regenerate ref-api

---
 data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json | 1 +
 data/grid5000/sites/lyon/clusters/orion/nodes/orion-2.json | 1 +
 data/grid5000/sites/lyon/clusters/orion/nodes/orion-3.json | 1 +
 data/grid5000/sites/lyon/clusters/orion/nodes/orion-4.json | 1 +
 4 files changed, 4 insertions(+)

diff --git a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json
index 036822415f2..4dec46a8072 100644
--- a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json
+++ b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json
@@ -24,6 +24,7 @@
       "memory": 5636096000,
       "model": "Tesla M2075",
       "power_default_limit": "225.00 W",
+      "reservation": true,
       "vbios_version": "70.10.46.00.05",
       "vendor": "Nvidia"
     }
diff --git a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-2.json b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-2.json
index c4809a4676a..e5b3b678e64 100644
--- a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-2.json
+++ b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-2.json
@@ -24,6 +24,7 @@
       "memory": 5636096000,
       "model": "Tesla M2075",
       "power_default_limit": "225.00 W",
+      "reservation": false,
       "vbios_version": "70.10.46.00.05",
       "vendor": "Nvidia"
     }
diff --git a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-3.json b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-3.json
index b26d0529896..444410c3168 100644
--- a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-3.json
+++ b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-3.json
@@ -24,6 +24,7 @@
       "memory": 5636096000,
       "model": "Tesla M2075",
       "power_default_limit": "225.00 W",
+      "reservation": false,
       "vbios_version": "70.10.46.00.05",
       "vendor": "Nvidia"
     }
diff --git a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-4.json b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-4.json
index 9866a6375ea..b05821e3295 100644
--- a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-4.json
+++ b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-4.json
@@ -24,6 +24,7 @@
       "memory": 5636096000,
       "model": "Tesla M2075",
       "power_default_limit": "225.00 W",
+      "reservation": false,
       "vbios_version": "70.10.46.00.05",
       "vendor": "Nvidia"
     }
-- 
GitLab


From da21c2bd483a15fa4a6d96b91835dc478acc24e6 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 7 Nov 2019 15:12:18 +0100
Subject: [PATCH 45/57] using empty character for indicating that generator
 expects no value

---
 lib/refrepo/gen/oar-properties.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 8007650d8ed..380b18b23ea 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -959,7 +959,7 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
               {: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 == ""
+                  if expected_value == "" or expected_value.nil?
                     expected_value = "ø"
                   end
                   fix_cmd = <<-TXT
-- 
GitLab


From bff27b5d8c34319c5c4028f4a5a81535f448e8bc Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Thu, 7 Nov 2019 15:12:48 +0100
Subject: [PATCH 46/57] implement a spec test for generator expecting no value

---
 spec/oar_properties_spec.rb | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 3903dee5289..77416a4b231 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -2110,6 +2110,42 @@ GeForce RTX 2080 Ti
       expect(generator_output[:stdout]).to include(expected_output)
       expect(generator_output[:stdout]).not_to include(not_expected_output)
     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 => 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)
+    end
   end
 
 end
-- 
GitLab


From c2c081ac176b9dd08a8cced3fe6e56e501be5a8f Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 13 Nov 2019 10:22:06 +0100
Subject: [PATCH 47/57] remove the setting of 'gpu=0' when there is no gpu
 associated to a node

---
 lib/refrepo/gen/oar-properties.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 380b18b23ea..8111b430492 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -247,7 +247,7 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       else
         # Update the resource
         if gpu == ''
-          result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset} -p gpu=0 -p gpudevice= -p gpu_model=\n"
+          result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset}\n"
         else
           result += "oarnodesetting --sql \"host='#{host}' AND resource_id='#{resource_id}' AND type='default'\" -p cpu=#{cpu} -p core=#{core} -p cpuset=#{cpuset} -p gpu=#{gpu} -p gpu_model='#{gpumodel}' -p gpudevice=#{gpudevice} # This GPU is mapped on #{gpudevicepath}\n"
         end
-- 
GitLab


From 9c1ae35e1e4556d8419c1bb2c037782ba2a3a185 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 13 Nov 2019 10:23:27 +0100
Subject: [PATCH 48/57] revert 'gpu=0' on spec tests

---
 spec/oar_properties_spec.rb | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 77416a4b231..4d6fdbbf416 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1485,16 +1485,16 @@ 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 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=2 -p cpuset=1 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=3 -p cpuset=2 -p gpu=0 -p gpudevice= -p gpu_model=
+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 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=0 -p gpudevice= -p gpu_model=
+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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
@@ -1637,16 +1637,16 @@ 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 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='2' AND type='default'" -p cpu=1 -p core=3 -p cpuset=1 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -p cpuset=2 -p gpu=0 -p gpudevice= -p gpu_model=
+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=3 -p cpuset=1
+oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -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 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='33' AND type='default'" -p cpu=4 -p core=30 -p cpuset=13 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='34' AND type='default'" -p cpu=4 -p core=31 -p cpuset=14 -p gpu=0 -p gpudevice= -p gpu_model=
-oarnodesetting --sql "host='clusterc-2.fakesite.grid5000.fr' AND resource_id='35' AND type='default'" -p cpu=4 -p core=32 -p cpuset=15 -p gpu=0 -p gpudevice= -p gpu_model=
+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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 mic='NO' -p wattmeter='MULTIPLE' -p cluster_priority=201906 -p max_walltime=86400 -p production='YES' -p maintenance='NO' -p disk_reservation_count=3
-- 
GitLab


From d2d42f6953f249362cb34c2480cf939e07ad78af Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 13 Nov 2019 10:24:28 +0100
Subject: [PATCH 49/57] implement sanity check of OAR resources

---
 lib/refrepo/gen/oar-properties.rb | 142 ++++++++++++++++++++++--------
 1 file changed, 103 insertions(+), 39 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 8111b430492..1f04e585afb 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -996,6 +996,90 @@ TXT
 end
 
 
+def sanity_check(cluster_resources, site_resources)
+
+  sanity_result = true
+
+  # Detect cluster resources
+  cluster_cpus =
+    cluster_resources
+      .map{|r| r["cpu"]}
+      .uniq
+  cluster_gpus =
+    cluster_resources
+      .map{|r| r["gpu"]}
+      .select{|gpu| not gpu.nil?}
+      .uniq
+  cluster_cores =
+    cluster_resources
+      .map{|r| r["core"]}
+      .uniq
+
+  # Check CPUs
+  cluster_cpus.each do |cluster_cpu|
+    hosts_with_same_cpu =
+      site_resources
+        .select{|r| r["cpu"] == cluster_cpu}
+        .map{|r| r["host"]}
+        .uniq
+
+    if hosts_with_same_cpu.length > 1
+      puts("################################")
+      puts("# Error: CPU #{cluster_cpu} is associated to more than one host: #{hosts_with_same_cpu}.")
+      puts("# You can review this situation via the following command:\n")
+      puts("################################")
+      puts("oarnodes -Y --sql \"cpu=#{cluster_cpu}\"")
+      puts("")
+
+      sanity_result = false
+    end
+  end
+
+  # Checks GPUs
+  cluster_gpus.each do |cluster_gpu|
+    hosts_with_same_gpu =
+      site_resources
+        .select{|r| r["gpu"] == cluster_gpu}
+        .map{|r| r["host"]}
+        .uniq
+
+    if hosts_with_same_gpu.length > 1
+      puts("################################")
+      puts("# Error: GPU #{cluster_gpu} is associated to more than one host: #{hosts_with_same_gpu}.")
+      puts("# You can review this situation via the following command:\n")
+      puts("################################")
+      puts("oarnodes -Y --sql \"gpu=#{cluster_gpu}\"")
+      puts("")
+
+      sanity_result = false
+    end
+  end
+
+  # Check Cores
+  cluster_cores.each do |cluster_core|
+    resources_id_with_same_core =
+      site_resources
+        .select{|r| r["core"] == cluster_core}
+        .map{|r| r["id"]}
+
+    if resources_id_with_same_core.length > 1
+      oar_sql_clause = resources_id_with_same_core .map{|rid| "resource_id='#{rid}'"}.join(" OR ")
+
+      puts("################################")
+      puts("# Error: resources with ids #{resources_id_with_same_core} have the same value for core (core is equal to #{cluster_core})\n")
+      puts("# You can review this situation via the following command:\n")
+      puts("################################")
+      puts("oarnodes -Y --sql \"#{oar_sql_clause}\"")
+      puts("")
+
+      sanity_result = false
+    end
+  end
+
+  return sanity_result
+end
+
+
 def extract_clusters_description(clusters, site_name, options, data_hierarchy, site_properties)
 
   # This function works as follow:
@@ -1057,6 +1141,12 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
                             .select{|r| r["cluster"] == cluster_name}
                             .select{|r| cluster_nodes.include?(r["host"].split(".")[0])}
 
+    sanity_check_result = sanity_check(cluster_resources, site_resources)
+    unless sanity_check_result
+      puts("It seems that the cluster \"#{cluster_name}\" has some incoherence in its resource configuration (see above). The generator will abort.")
+      raise 'Sanity check failed'
+    end
+
     first_node = cluster_desc_from_data_files['nodes'].first[1]
 
     # Some clusters such as graphite have a different organisation:
@@ -1128,44 +1218,14 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     end
 
     phys_rsc_map.each do |physical_resource, variables|
-      # Try to detect a bad allocation of physical resources. There is two main cases:
-      #  case 1) We detect too many resources: it likely means than a rsc of another cluster has been mis-associated to
-      #   this cluster. A simple fix is to sort <RESOURCES> of the cluster according to their number of occurence in
-      #   the cluster's properties, and keep only the N <RESOURCES> that appears the most frequently, where N is equal
-      #   to node_count * count(RESOURCES)
-      #  case 2) We don't have enough RESOURCES: it likely means that a same rsc has been associated to different
-      #   properties, and that a "gap" should exist in RESOURCES IDs (.i.e some rsc IDs are available). We fill the
-      #   missing RESOURCES with a) available RESOURCES in the site, and then b) new RESOURCES
-
+      # Try to detect case where an existing cluster is misconfigured: too many or too few OAR resources
       phys_rsc_ids = variables[:current_ids]
       expected_phys_rsc_count = variables[:per_cluster_count]
 
       if phys_rsc_ids.length != expected_phys_rsc_count
-
-        # We detected a situation where a phyisical resource is misallocated to a wrong OAR property
-        if cluster_resources.map{|r| r[physical_resource]}.length == expected_phys_rsc_count
-          resource_count = Hash.new([])
-          cluster_resources.select{|r| not r[physical_resource].nil? }.each do |resource|
-            resource_count[resource[physical_resource]] += [resource]
-          end
-
-          for (k, v) in resource_count
-            if v.size > 1
-              duplicated_resources = cluster_resources.select{|r| r[physical_resource] == k}
-              oar_sql_clause = duplicated_resources.map{|r| r["id"]}.map{|rid| "resource_id='#{rid}'"}.join(" OR ")
-
-              puts("################################")
-              puts("# Error: resources with ids #{duplicated_resources.map{|r| r["id"]}} have the same value for #{physical_resource} (#{physical_resource} is equal to #{k})\n")
-              puts("# You can review this situation via the following command:\n")
-              puts("################################")
-              puts("oarnodes -Y --sql \"#{oar_sql_clause}\"\n")
-            end
-          end
-        end
-
         if ["cpu", "core"].include? physical_resource
-          puts("#{physical_resource} has an unexpected number of resources (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count})")
-          return 1
+          puts("#{physical_resource.upcase} has an unexpected number of resources (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count}).")
+          raise "unexpected number (current:#{phys_rsc_ids.length} vs expected:#{expected_phys_rsc_count}) of resources for cluster #{cluster_name}"
         end
       end
 
@@ -1377,7 +1437,6 @@ def generate_oar_properties(options)
     clusters = options[:clusters]
   end
 
-
   refrepo_properties = get_oar_properties_from_the_ref_repo(data_hierarchy, {
       :sites => [site_name]
   })
@@ -1386,11 +1445,16 @@ def generate_oar_properties(options)
   # Generate information about the clusters
   ############################################
 
-  generated_hierarchy = extract_clusters_description(clusters,
-                                                     site_name,
-                                                     options,
-                                                     data_hierarchy,
-                                                     refrepo_properties[site_name])
+  begin
+    generated_hierarchy = extract_clusters_description(clusters,
+                                                       site_name,
+                                                       options,
+                                                       data_hierarchy,
+                                                       refrepo_properties[site_name])
+  rescue
+    print("A problem occured while building the clusters description. Generator is exiting.")
+    return 1
+  end
 
   ############################################
   # Output generated information
-- 
GitLab


From bc2266e65972f1c48d205cef2479641737595a6f Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 13 Nov 2019 10:25:23 +0100
Subject: [PATCH 50/57] implement spec tests for sanity check of OAR resources

---
 spec/oar_properties_spec.rb                   |  131 +-
 ...red_server_duplicated_cpus_cores_gpus.json | 2446 ++++++++++++++++
 ...red_server_with_too_few_oar_resources.json | 2370 ++++++++++++++++
 ...ed_server_with_too_many_oar_resources.json | 2522 +++++++++++++++++
 4 files changed, 7462 insertions(+), 7 deletions(-)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_with_too_few_oar_resources.json
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_with_too_many_oar_resources.json

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 4d6fdbbf416..367d68c86bf 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1731,17 +1731,11 @@ TXT
 oarnodes -Y --sql "resource_id='2' OR resource_id='3'"
 TXT
 
-      has_encountered_an_error = false
       generator_output = capture do
-        begin
           generate_oar_properties(options)
-        rescue
-          has_encountered_an_error = true
-        end
       end
 
       expect(generator_output[:stdout]).to include(expected_output)
-      expect(has_encountered_an_error).to be true
     end
   end
 
@@ -2111,7 +2105,7 @@ GeForce RTX 2080 Ti
       expect(generator_output[:stdout]).not_to include(not_expected_output)
     end
 
-    it 'should ignore the GPUs' do
+    it 'it should expect no value for GPU (DIFF)' do
 
       uri = URI(conf["uri"])
 
@@ -2148,4 +2142,127 @@ GeForce RTX 2080 Ti
     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)
+    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)
+    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)
+    end
+  end
+
 end
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json b/spec/stub_oar_properties/dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json
new file mode 100644
index 00000000000..502cf530d83
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_duplicated_cpus_cores_gpus.json
@@ -0,0 +1,2446 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 1,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 1,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 21,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_few_oar_resources.json b/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_few_oar_resources.json
new file mode 100644
index 00000000000..d2e9da1ce73
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_few_oar_resources.json
@@ -0,0 +1,2370 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_many_oar_resources.json b/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_many_oar_resources.json
new file mode 100644
index 00000000000..247174d7c3b
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_with_too_many_oar_resources.json
@@ -0,0 +1,2522 @@
+{
+  "offset": 0,
+  "api_timestamp": 1568902577,
+  "items": [
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 0,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/1"
+        },
+        {
+          "href": "//oarapi/resources/1/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 1,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 2,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/2",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/2/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 1,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "gpu": 1,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 2,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE"
+    },
+    {
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 3,
+      "ip": "172.16.64.1",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "cpuset": 2,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/3"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/3/jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 3,
+      "type": "default",
+      "production": "YES",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.1",
+      "myri_count": 0,
+      "core": 4,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/4",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/4/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 4,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 1,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 5,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/5"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/5/jobs"
+        }
+      ],
+      "cpuset": 4,
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 2,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 5,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 1,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr"
+    },
+    {
+      "opa_count": 0,
+      "id": 6,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/6",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/6/jobs"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 1,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 6,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 2,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/7",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/7/jobs"
+        }
+      ],
+      "cpuset": 6,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 7,
+      "production": "YES",
+      "type": "default",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 7,
+      "ip": "172.16.64.1",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "cpu": 1,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO"
+    },
+    {
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 2,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "id": 8,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 7,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/8",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/8/jobs",
+          "title": "jobs"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 1,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 8,
+      "myri_count": 0,
+      "ip": "172.16.64.1"
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 3,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/9"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/9/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 8,
+      "production": "YES",
+      "type": "default",
+      "id": 9,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 9,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "core": 10,
+      "ip": "172.16.64.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/10",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/10/jobs"
+        }
+      ],
+      "cpuset": 9,
+      "production": "YES",
+      "type": "default",
+      "id": 10,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3
+    },
+    {
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "core": 11,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "available_upto": 2147483647,
+      "cpuset": 10,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/11",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/11/jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "id": 11,
+      "opa_count": 0,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 3,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 12,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 3,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 12,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/12",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/12/jobs"
+        }
+      ],
+      "cpuset": 11,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "core": 13,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 12,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/13"
+        },
+        {
+          "href": "//oarapi/resources/13/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "id": 13,
+      "opa_count": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 4,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577
+    },
+    {
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 4,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 13,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/14"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/14/jobs",
+          "title": "jobs"
+        }
+      ],
+      "production": "YES",
+      "type": "default",
+      "id": 14,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "cpu": 2,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 14,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO"
+    },
+    {
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "cpu": 2,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 15,
+      "ip": "172.16.64.1",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "opa_count": 0,
+      "id": 15,
+      "production": "YES",
+      "type": "default",
+      "available_upto": 2147483647,
+      "cpuset": 14,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/15"
+        },
+        {
+          "href": "//oarapi/resources/15/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 4,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0
+    },
+    {
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 4,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-1.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/16",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/16/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "opa_count": 0,
+      "id": 16,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-1.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 2,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.1",
+      "core": 16,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-1.fakesite.grid5000.fr",
+      "state_num": 1
+    },
+    {
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 0,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 17,
+      "ip": "172.16.64.2",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "gpu": 5,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/17",
+          "rel": "self"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/17/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 0,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 17,
+      "production": "YES",
+      "type": "default",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 18,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "drain": "NO",
+      "memcpu": 65536,
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 0,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_state": "UnChanged",
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "available_upto": 2147483647,
+      "cpuset": 1,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/18",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/18/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 18,
+      "production": "YES",
+      "type": "default",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 5,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0
+    },
+    {
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 19,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 2,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/19"
+        },
+        {
+          "href": "//oarapi/resources/19/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 19,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64"
+    },
+    {
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 5,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "type": "default",
+      "production": "YES",
+      "id": 20,
+      "opa_count": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/20"
+        },
+        {
+          "href": "//oarapi/resources/20/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 3,
+      "available_upto": 2147483647,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 0,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "myri_count": 0,
+      "core": 20,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3
+    },
+    {
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "core": 21,
+      "ip": "172.16.64.2",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "opa_count": 0,
+      "id": 21,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 4,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/21"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/21/jobs",
+          "title": "jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0
+    },
+    {
+      "opa_count": 0,
+      "id": 22,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/22"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/22/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 5,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 3,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 22,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "gpudevice": 1,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 3,
+      "drain": "NO",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "ip": "172.16.64.2",
+      "myri_count": 0,
+      "core": 23,
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/23"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/23/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 6,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "id": 23,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO"
+    },
+    {
+      "mic": "NO",
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "maintenance": "NO",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "next_state": "UnChanged",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 24,
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "cpu": 3,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "drain": "NO",
+      "memcpu": 65536,
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "gpu": 6,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "opa_rate": 0,
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/24",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/24/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 7,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "opa_count": 0,
+      "id": 24,
+      "production": "YES",
+      "type": "default"
+    },
+    {
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 2,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "drain": "NO",
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 25,
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 7,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/25",
+          "rel": "self"
+        },
+        {
+          "href": "//oarapi/resources/25/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 8,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 25,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0
+    },
+    {
+      "id": 26,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "cpuset": 9,
+      "links": [
+        {
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node",
+          "rel": "member"
+        },
+        {
+          "href": "//oarapi/resources/26",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "title": "jobs",
+          "href": "//oarapi/resources/26/jobs"
+        }
+      ],
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "last_job_date": 0,
+      "eth_rate": 10,
+      "opa": "NO",
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "gpu": 7,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "core": 26,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0
+    },
+    {
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/27"
+        },
+        {
+          "href": "//oarapi/resources/27/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 10,
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 27,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "state": "Alive",
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "gpu": 7,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "core": 27,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "memcpu": 65536,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "gpudevice": 2,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO"
+    },
+    {
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 2,
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "core": 28,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 7,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 28,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr"
+        },
+        {
+          "href": "//oarapi/resources/28",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/28/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 11,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072
+    },
+    {
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "deploy": "NO",
+      "memcpu": 65536,
+      "core": 29,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "myri": "NO",
+      "max_walltime": 86400,
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "suspended_jobs": "NO",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "gpudevice": 3,
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/29"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/29/jobs",
+          "title": "jobs"
+        }
+      ],
+      "cpuset": 12,
+      "production": "YES",
+      "type": "default",
+      "id": 29,
+      "opa_count": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "disktype": "SATA",
+      "cluster": "clustera",
+      "state": "Alive",
+      "gpu": 8
+    },
+    {
+      "gpu": 8,
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "last_available_upto": 0,
+      "finaud_decision": "NO",
+      "last_job_date": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "opa_rate": 0,
+      "id": 30,
+      "opa_count": 0,
+      "type": "default",
+      "production": "YES",
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/30"
+        },
+        {
+          "title": "jobs",
+          "href": "//oarapi/resources/30/jobs",
+          "rel": "collection"
+        }
+      ],
+      "cpuset": 13,
+      "available_upto": 2147483647,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "eth_count": 1,
+      "switch": "gw-fakesite",
+      "mic": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "next_state": "UnChanged",
+      "gpudevice": 3,
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "suspended_jobs": "NO",
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "myri_count": 0,
+      "core": 30,
+      "ip": "172.16.64.2",
+      "memcpu": 65536,
+      "deploy": "NO",
+      "memcore": 8192,
+      "cpufreq": "2.1",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "drain": "NO"
+    },
+    {
+      "drain": "NO",
+      "cputype": "Intel Xeon Silver 4110",
+      "virtual": "ivt",
+      "cpu": 4,
+      "deploy": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "memcpu": 65536,
+      "myri_count": 0,
+      "ip": "172.16.64.2",
+      "core": 31,
+      "max_walltime": 86400,
+      "myri": "NO",
+      "state_num": 1,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "suspended_jobs": "NO",
+      "disk_reservation_count": 0,
+      "ib": "NO",
+      "next_finaud_decision": "NO",
+      "wattmeter": "MULTIPLE",
+      "gpudevice": 3,
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "cpuarch": "x86_64",
+      "next_state": "UnChanged",
+      "gpu_count": 4,
+      "cluster_priority": 201906,
+      "maintenance": "NO",
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "ib_count": 0,
+      "mic": "NO",
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_rate": 0,
+      "besteffort": "YES",
+      "cpuset": 14,
+      "links": [
+        {
+          "title": "node",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "rel": "member"
+        },
+        {
+          "rel": "self",
+          "href": "//oarapi/resources/31"
+        },
+        {
+          "href": "//oarapi/resources/31/jobs",
+          "title": "jobs",
+          "rel": "collection"
+        }
+      ],
+      "available_upto": 2147483647,
+      "type": "default",
+      "production": "YES",
+      "opa_count": 0,
+      "id": 31,
+      "opa_rate": 0,
+      "memnode": 131072,
+      "desktop_computing": "NO",
+      "eth_rate": 10,
+      "opa": "NO",
+      "last_job_date": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "cpucore": 8,
+      "scheduler_priority": 0,
+      "myri_rate": 0,
+      "api_timestamp": 1568902577,
+      "expiry_date": 0,
+      "nodemodel": "Dell PowerEdge T640",
+      "state": "Alive",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "gpu": 8
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 32,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 32,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    },
+    {
+      "switch": "gw-fakesite",
+      "eth_count": 1,
+      "ib_count": 0,
+      "gpu_model": "GeForce RTX 2080 Ti",
+      "mic": "NO",
+      "next_state": "UnChanged",
+      "maintenance": "NO",
+      "cluster_priority": 201906,
+      "gpu_count": 4,
+      "wattmeter": "MULTIPLE",
+      "next_finaud_decision": "NO",
+      "cpuarch": "x86_64",
+      "host": "clustera-2.fakesite.grid5000.fr",
+      "gpudevice": 3,
+      "network_address": "clustera-2.fakesite.grid5000.fr",
+      "state_num": 1,
+      "ib": "NO",
+      "disk_reservation_count": 0,
+      "suspended_jobs": "NO",
+      "myri_count": 0,
+      "core": 33,
+      "ip": "172.16.64.2",
+      "max_walltime": 86400,
+      "myri": "NO",
+      "cpufreq": "2.1",
+      "memcore": 8192,
+      "deploy": "NO",
+      "memcpu": 65536,
+      "drain": "NO",
+      "cpu": 4,
+      "virtual": "ivt",
+      "cputype": "Intel Xeon Silver 4110",
+      "cluster": "clustera",
+      "disktype": "SATA",
+      "state": "Alive",
+      "gpu": 8,
+      "nodemodel": "Dell PowerEdge T640",
+      "expiry_date": 0,
+      "scheduler_priority": 0,
+      "cpucore": 8,
+      "api_timestamp": 1568902577,
+      "myri_rate": 0,
+      "finaud_decision": "NO",
+      "last_available_upto": 0,
+      "opa": "NO",
+      "eth_rate": 10,
+      "last_job_date": 0,
+      "opa_rate": 0,
+      "desktop_computing": "NO",
+      "memnode": 131072,
+      "production": "YES",
+      "type": "default",
+      "opa_count": 0,
+      "id": 33,
+      "besteffort": "YES",
+      "ib_rate": 0,
+      "available_upto": 2147483647,
+      "cpuset": 15,
+      "links": [
+        {
+          "rel": "member",
+          "href": "//oarapi/resources/nodes/clustera-2.fakesite.grid5000.fr",
+          "title": "node"
+        },
+        {
+          "href": "//oarapi/resources/32",
+          "rel": "self"
+        },
+        {
+          "rel": "collection",
+          "href": "//oarapi/resources/32/jobs",
+          "title": "jobs"
+        }
+      ]
+    }
+  ],
+  "total": 32,
+  "links": [
+    {
+      "href": "//oarapi/resources/details.json?limit=999999&offset=0",
+      "rel": "self"
+    }
+  ]
+}
+
-- 
GitLab


From 9351d304fd06d6296553b1e18e53f827891609bc Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 18 Nov 2019 10:21:22 +0100
Subject: [PATCH 51/57] [action=DIFF] remove use warning about OAR cmds and use
 better names for somes variables; return an error code when something is
 displayed

---
 lib/refrepo/gen/oar-properties.rb | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 1f04e585afb..ac106f0baf1 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -935,7 +935,7 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
       # Check that CPUSETs on the OAR server are consistent with what would have been generated
       oar_resources = get_oar_resources_from_oar(options)
 
-      fix_cmds = ""
+      diagnostic_msgs = ""
 
       options[:clusters].each do |cluster|
 
@@ -962,10 +962,10 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
                   if expected_value == "" or expected_value.nil?
                     expected_value = "ø"
                   end
-                  fix_cmd = <<-TXT
+                  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
-                  fix_cmds += "#{fix_cmd}"
+                  diagnostic_msgs += "#{diagnostic_msg}"
                 end
               end
             else
@@ -979,14 +979,9 @@ TXT
         end
       end
 
-      if not fix_cmds.empty?
-        puts ""
-        puts "################################################"
-        puts "# You may execute the following commands to fix "
-        puts "# some resources of the OAR database"
-        puts "################################################"
-        puts ""
-        puts fix_cmds
+      if not diagnostic_msgs.empty?
+        puts diagnostic_msgs
+        ret = false unless options[:update] || options[:print]
       end
 
     end # if options[:diff]
-- 
GitLab


From d2c9da863efcd02382d48893d0847e5305e811e0 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 2 Dec 2019 12:53:59 +0100
Subject: [PATCH 52/57] pre-sort resources by cpu/core to handle old clusters

---
 lib/refrepo/gen/oar-properties.rb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index ac106f0baf1..0fee151e1d0 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1135,6 +1135,7 @@ def extract_clusters_description(clusters, site_name, options, data_hierarchy, s
     cluster_resources = site_resources
                             .select{|r| r["cluster"] == cluster_name}
                             .select{|r| cluster_nodes.include?(r["host"].split(".")[0])}
+                            .sort_by{|r| [r["cpu"], r["core"]]}
 
     sanity_check_result = sanity_check(cluster_resources, site_resources)
     unless sanity_check_result
-- 
GitLab


From beb3b33ec742983e9f53cbaa30b31461fb33098a Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 2 Dec 2019 12:56:15 +0100
Subject: [PATCH 53/57] fix specs

---
 spec/oar_properties_spec.rb | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 367d68c86bf..0a394bf3af5 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -1579,11 +1579,13 @@ TXT
 
       expected_clusterc1_desc = <<-TXT
 |  clusterc | clusterc-1           | 1     | 1     | 0        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 3     | 1        |      |                      | Intel Xeon Silver 4110         |                               |
-|  clusterc | clusterc-1           | 1     | 2     | 2        |      |                      | 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
@@ -1638,11 +1640,12 @@ 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=3 -p cpuset=1
-oarnodesetting --sql "host='clusterc-1.fakesite.grid5000.fr' AND resource_id='3' AND type='default'" -p cpu=1 -p core=2 -p cpuset=2
+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
-- 
GitLab


From 6c7a177a2e904978cd77a04e12420797f99494fc Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 2 Dec 2019 15:00:48 +0100
Subject: [PATCH 54/57] orion's gpus are not reservable

---
 input/grid5000/sites/lyon/clusters/orion/orion.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/input/grid5000/sites/lyon/clusters/orion/orion.yaml b/input/grid5000/sites/lyon/clusters/orion/orion.yaml
index c5ee8480918..6580ec2a925 100644
--- a/input/grid5000/sites/lyon/clusters/orion/orion.yaml
+++ b/input/grid5000/sites/lyon/clusters/orion/orion.yaml
@@ -31,6 +31,7 @@ nodes:
         power_default_limit: 225.00 W
         vbios_version: 70.10.46.00.05
         vendor: Nvidia
+        reservation: false
     network_adapters:
       eth0:
         enabled: true
-- 
GitLab


From 488054974c7fa3502568e2acf3f118b97f217513 Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 2 Dec 2019 15:01:06 +0100
Subject: [PATCH 55/57] regenerate reference-api

---
 data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json
index 4dec46a8072..2b393f9d112 100644
--- a/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json
+++ b/data/grid5000/sites/lyon/clusters/orion/nodes/orion-1.json
@@ -24,7 +24,7 @@
       "memory": 5636096000,
       "model": "Tesla M2075",
       "power_default_limit": "225.00 W",
-      "reservation": true,
+      "reservation": false,
       "vbios_version": "70.10.46.00.05",
       "vendor": "Nvidia"
     }
-- 
GitLab


From 31c5f5f5f70b1797967bc2050783ceff5b9d973c Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Mon, 2 Dec 2019 15:01:45 +0100
Subject: [PATCH 56/57] fix ssh host when providing no OAR URL

---
 lib/refrepo/gen/oar-properties.rb | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 0fee151e1d0..685a1bca816 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1421,6 +1421,9 @@ def generate_oar_properties(options)
 
   site_name = options[:site]
 
+  # Replace the site placeholder of ssh hosts by the site
+  options[:ssh][:host] = options[:ssh][:host].gsub('%s', site_name)
+
   # If no cluster is given, then the clusters are the cluster of the given site
   if not options.key? :clusters or options[:clusters].length == 0
     if data_hierarchy['sites'].key? site_name
-- 
GitLab


From 828903db1bebd77e029503bb91f932df8077164c Mon Sep 17 00:00:00 2001
From: Jonathan Pastor <jonathancmoa@gmail.com>
Date: Wed, 4 Dec 2019 10:27:28 +0100
Subject: [PATCH 57/57] handle 'diff,print' action

---
 lib/refrepo/gen/oar-properties.rb             |  132 +-
 spec/oar_properties_spec.rb                   |  146 +
 ...igured_resources_properties_and_disks.json | 2978 +++++++++++++++++
 ...d_data_misconfigured_server_with_disk.json | 1527 +++++++++
 4 files changed, 4748 insertions(+), 35 deletions(-)
 create mode 100644 spec/stub_oar_properties/dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json
 create mode 100644 spec/stub_oar_properties/load_data_hierarchy_stubbed_data_misconfigured_server_with_disk.json

diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index 685a1bca816..a63e71041fd 100644
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -204,25 +204,42 @@ 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)
+def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties, data_hierarchy, faulty_resources=nil, faulty_nodes=nil)
 
   result = ""
 
-  # Generate helper functions and detect the next available CPU and CORE IDs for
-  # non exisiting resources
-  result += generate_oar_commands_header()
+  print_header = true
 
-  # Ensure that OAR properties exist before creating/updating OAR resources
-  result += generate_oar_property_creation(site_name, data_hierarchy)
+  if not faulty_nodes.nil? or not faulty_resources.nil?
+    print_header = false
+  end
+
+  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
 
   # Iterate over nodes of the generated resource hierarchy
   generated_hierarchy[:nodes].each do |node|
-    result += %Q{
+
+    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{
 
 ###################################
 # #{node[:fqdn]}
 ###################################
 }
+    end
 
     # Iterate over the resources of the OAR node
     node[:oar_rows].each do |oar_ressource_row|
@@ -237,6 +254,10 @@ 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 == ''
@@ -254,8 +275,15 @@ def export_rows_as_oar_command(generated_hierarchy, site_name, site_properties,
       end
     end
 
-    # Set the OAR properties of the OAR node
-    result += generate_set_node_properties_cmd(node[:fqdn], node[:default_description])
+    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
 
     # Iterate over storage devices
     node[:description]["storage_devices"].select{|v| v.key?("reservation") and v["reservation"]}.each do |storage_device|
@@ -268,6 +296,10 @@ 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
 
@@ -285,7 +317,9 @@ 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
 
-    result += generate_separators()
+    if print_node
+      result += generate_separators()
+    end
   end
 
   return result
@@ -802,6 +836,11 @@ end
 def do_diff(options, generated_hierarchy, refrepo_properties)
   ret = 0
 
+  diagnostic_msgs = []
+
+  faulty_resources = []
+  faulty_nodes = []
+
   properties = {
     'ref' => refrepo_properties,
     'oar' => get_oar_properties_from_oar(options)
@@ -835,7 +874,7 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
     end
 
     if missings_alive.size > 0
-      puts "*** Error: The following nodes exist in the OAR server but are missing in the reference-repo: #{missings_alive.join(', ')}.\n"
+      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
 
@@ -864,6 +903,14 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
           diff_keys = diff.map { |hashdiff_array| hashdiff_array[1] }
           properties['diff'][site_uid][type][key] = properties_ref.select { |k, _v| diff_keys.include?(k) }
 
+          if not diff.empty?
+            if key.kind_of?(Array)
+              faulty_nodes.push(key[-1])
+            else
+              faulty_nodes.push(key)
+            end
+          end
+
           # Verbose output
           if properties['oar'][site_uid][type][key].nil?
             info = ((type == 'default') ? ' new node !' : ' new disk !')
@@ -873,27 +920,27 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
 
           case options[:verbose]
           when 1
-            puts "#{key}:#{info}" if info != ''
-            puts "#{key}:#{diff_keys}" if diff.size != 0
+            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
-              puts "Output format: [ '-', 'key', 'value'] for missing, [ '+', 'key', 'value'] for added, ['~', 'key', 'old value', 'new value'] for changed"
+              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?
-              puts "  #{key}: OK#{info}"
+              diagnostic_msgs.push( "  #{key}: OK#{info}")
             elsif diff == prev_diff
-              puts "  #{key}:#{info} same modifications as above"
+              diagnostic_msgs.push( "  #{key}:#{info} same modifications as above")
             else
-              puts "  #{key}:#{info}"
-              diff.each { |d| puts "    #{d}" }
+              diagnostic_msgs.push( "  #{key}:#{info}")
+              diff.each { |d| diagnostic_msgs.push( "    #{d}") }
             end
             prev_diff = diff
           when 3
             # Even more details
-            puts "#{key}:#{info}" if info != ''
-            puts JSON.pretty_generate(key => { 'old values' => properties_oar, 'new values' => properties_ref })
+            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]
@@ -911,12 +958,12 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
         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/Fixnum) of properties generated by this script and the existing values on the server.
-          puts "Error: the OAR property '#{k}' is a '#{v_oar}' on the #{site_uid} server and this script uses '#{v_ref}' for this property."
+          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
       end
 
-      puts "Properties that need to be created on the #{site_uid} server: #{properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_default_keys.include?(e) }.join(', ')}" if options[:verbose] && properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_default_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_default_keys.include?(e) }.join(', ')}") if options[:verbose] && properties_keys['diff'][site_uid].keys.to_a.delete_if { |e| ignore_default_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
@@ -925,17 +972,21 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
       end
 
       if options[:verbose] && unknown_properties.size > 0
-        puts "Properties existing on the #{site_uid} server but not managed/known by the generator: #{unknown_properties.to_a.join(', ')}."
-        puts "Hint: you can delete properties with 'oarproperty -d <property>' or add them to the ignore list in lib/lib-oar-properties.rb."
+        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
-      puts "Skipped retired nodes: #{skipped_nodes}" if skipped_nodes.any?
+      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
 
       # Check that CPUSETs on the OAR server are consistent with what would have been generated
       oar_resources = get_oar_resources_from_oar(options)
 
-      diagnostic_msgs = ""
+      error_msgs = ""
 
       options[:clusters].each do |cluster|
 
@@ -965,7 +1016,9 @@ def do_diff(options, generated_hierarchy, refrepo_properties)
                   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
-                  diagnostic_msgs += "#{diagnostic_msg}"
+                  error_msgs += "#{diagnostic_msg}"
+                  faulty_resources.push(row[:resource_id])
+                  faulty_resources.push(row[:host])
                 end
               end
             else
@@ -973,21 +1026,23 @@ TXT
               # 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
           end
         end
       end
 
-      if not diagnostic_msgs.empty?
-        puts diagnostic_msgs
+      if not (options[:print] and options[:diff]) and not error_msgs.empty?
+        puts error_msgs
         ret = false unless options[:update] || options[:print]
       end
 
     end # if options[:diff]
   end
 
-  return ret
+  return ret, faulty_resources, faulty_nodes
 end
 
 
@@ -1466,16 +1521,23 @@ def generate_oar_properties(options)
     export_rows_as_formated_line(generated_hierarchy)
   end
 
+  # 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
+  end
+
   # DO=print
   if options.key? :print and options[:print]
-    cmds = export_rows_as_oar_command(generated_hierarchy, site_name, refrepo_properties[site_name], data_hierarchy)
+    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
+
     puts(cmds)
   end
 
-  # Do=Diff
-  if options.key? :diff and options[:diff]
-    ret = do_diff(options, generated_hierarchy, refrepo_properties)
-  end
 
   # Do=update
   if options[:update]
diff --git a/spec/oar_properties_spec.rb b/spec/oar_properties_spec.rb
index 0a394bf3af5..fbe37d3b1c0 100644
--- a/spec/oar_properties_spec.rb
+++ b/spec/oar_properties_spec.rb
@@ -489,6 +489,64 @@ TXT
     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
+
+  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")
@@ -1774,6 +1832,34 @@ TXT
 
       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)
+    end
   end
 
   context 'interracting with a configured OAR server (msising network interfaces)' do
@@ -2268,4 +2354,64 @@ CORE has an unexpected number of resources (current:31 vs expected:32).
     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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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 virtual='ivt' -p cpuarch='x86_64' -p cpucore=8 -p cputype='Intel Xeon Silver 4110' -p cpufreq='2.1' -p disktype='SATA' -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 opa='NO' -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 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 cluster='clusterb' -p host='clusterb-1.fakesite.grid5000.fr' -p available_upto=0 -p deploy='YES' -p production='YES' -p maintenance='NO' -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)
+    end
+  end
+
 end
diff --git a/spec/stub_oar_properties/dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json b/spec/stub_oar_properties/dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json
new file mode 100644
index 00000000000..a89a018b30a
--- /dev/null
+++ b/spec/stub_oar_properties/dump_oar_api_configured_server_with_disk_misconfigured_resources_properties_and_disks.json
@@ -0,0 +1,2978 @@
+{
+   "api_timestamp" : 1569497994,
+   "offset" : 0,
+   "total" : 38,
+   "items" : [
+      {
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/1",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/1/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "gpu" : 1,
+         "finaud_decision" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "id" : 1,
+         "cluster" : "clusterb",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "besteffort" : "YES",
+         "core" : 1,
+         "myri" : "NO",
+         "opa" : "NO"
+      },
+      {
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/2",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/2/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "myri" : "NO",
+         "core" : 2,
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "deploy" : "NO",
+         "cpucore" : 8,
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 1,
+         "suspended_jobs" : "NO",
+         "id" : 2,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0
+      },
+      {
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "id" : 3,
+         "cluster" : "clusterb",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "cpuset" : 2,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 3,
+         "myri" : "NO",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 1,
+         "finaud_decision" : "NO",
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 0,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/3"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/3/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO"
+      },
+      {
+         "finaud_decision" : "NO",
+         "gpu" : 1,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/4"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/4/jobs"
+            }
+         ],
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 4,
+         "besteffort" : "YES",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "id" : 4,
+         "cluster" : "clusterb",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "cpuset" : 3,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr"
+      },
+      {
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu" : 2,
+         "finaud_decision" : "NO",
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/5"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/5/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 5,
+         "myri" : "NO",
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "ip" : "172.16.64.1",
+         "cpuarch" : "x86_64",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "id" : 5,
+         "cluster" : "clusterb",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 4,
+         "opa_count" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 1,
+         "last_job_date" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0
+      },
+      {
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "finaud_decision" : "NO",
+         "gpu" : 2,
+         "gpu_count" : 4,
+         "gpudevice" : 1,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/6"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/6/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "id" : 6,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 5,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 1,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 6,
+         "myri" : "NO"
+      },
+      {
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 7,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 6,
+         "suspended_jobs" : "NO",
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "cpu" : 1,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 7,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu" : 2,
+         "finaud_decision" : "NO",
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/7",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/7/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0
+      },
+      {
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "gpu" : 2,
+         "finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/8",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/8/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 8,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "last_job_date" : 0,
+         "cpucore" : 8,
+         "cpu" : 1,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "cpuset" : 7,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "opa" : "NO",
+         "core" : 8,
+         "myri" : "NO",
+         "besteffort" : "YES"
+      },
+      {
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 9,
+         "opa" : "NO",
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 8,
+         "opa_count" : 0,
+         "cpu" : 2,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 9,
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/9",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/9/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu" : 3,
+         "finaud_decision" : "NO",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO"
+      },
+      {
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "finaud_decision" : "NO",
+         "gpu" : 3,
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/10",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/10/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 10,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 10,
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "drain" : "NO",
+         "cpuset" : 9,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpu" : 2,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0
+      },
+      {
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/11"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/11/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "finaud_decision" : "NO",
+         "gpu" : 3,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 2,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "cpuset" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "id" : 11,
+         "cluster" : "clusterb",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "myri" : "NO",
+         "core" : 11,
+         "besteffort" : "YES",
+         "opa" : "NO"
+      },
+      {
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/12",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/12/jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu" : 3,
+         "finaud_decision" : "NO",
+         "cpuset" : 11,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 2,
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "ip" : "172.16.64.1",
+         "cpuarch" : "x86_64",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 12,
+         "besteffort" : "YES",
+         "core" : 12,
+         "myri" : "NO",
+         "opa" : "NO"
+      },
+      {
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 4,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/13"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/13/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 13,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpu" : 2,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "cpuset" : 12,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 13,
+         "besteffort" : "YES"
+      },
+      {
+         "finaud_decision" : "NO",
+         "gpu" : 4,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/14"
+            },
+            {
+               "href" : "//oarapi/resources/14/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "opa" : "NO",
+         "core" : 14,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "cluster" : "clusterb",
+         "id" : 14,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 2,
+         "cpucore" : 8,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 13
+      },
+      {
+         "core" : 15,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpu" : 2,
+         "last_job_date" : 0,
+         "eth_rate" : 10,
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 14,
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "id" : 15,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/15",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/15/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu" : 4,
+         "finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk_reservation_count" : 3,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "switch" : null,
+         "diskpath" : null,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "myri_rate" : 0,
+         "eth_count" : 1
+      },
+      {
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 16,
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.1",
+         "cluster" : "clusterb",
+         "id" : 16,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpu" : 2,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-1.fakesite.grid5000.fr",
+         "cpuset" : 15,
+         "gpu" : 4,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-1.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/16"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/16/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 3,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "disk_reservation_count" : 3,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO"
+      },
+      {
+         "core" : null,
+         "myri" : null,
+         "besteffort" : "YES",
+         "opa" : null,
+         "myri_count" : null,
+         "cpu" : null,
+         "cpufreq" : null,
+         "cpucore" : null,
+         "deploy" : "YES",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "opa_count" : null,
+         "drain" : "NO",
+         "eth_rate" : null,
+         "cpuset" : -1,
+         "network_address" : "",
+         "suspended_jobs" : "NO",
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 17,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcore" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "opa_rate" : null,
+         "wattmeter" : null,
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/17"
+            },
+            {
+               "href" : "//oarapi/resources/17/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "api_timestamp" : 1569497994,
+         "memcpu" : null,
+         "gpudevice" : null,
+         "gpu_count" : null,
+         "finaud_decision" : "NO",
+         "gpu" : null,
+         "next_finaud_decision" : "NO",
+         "disk" : "sdb.clusterb-1",
+         "cputype" : null,
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:1",
+         "switch" : null,
+         "max_walltime" : null,
+         "production" : "YES",
+         "disk_reservation_count" : null,
+         "disktype" : null,
+         "mic" : null,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "type" : "disk",
+         "ib" : null,
+         "state_num" : 1,
+         "myri_rate" : null,
+         "eth_count" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr"
+      },
+      {
+         "ib_rate" : null,
+         "gpu_model" : null,
+         "disk" : "sdc.clusterb-1",
+         "cputype" : null,
+         "next_finaud_decision" : "NO",
+         "gpu" : null,
+         "finaud_decision" : "NO",
+         "gpu_count" : null,
+         "gpudevice" : null,
+         "memcpu" : null,
+         "api_timestamp" : 1569497994,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/18"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/18/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "eth_count" : null,
+         "myri_rate" : null,
+         "state_num" : 1,
+         "ib" : null,
+         "type" : "disk",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : null,
+         "disktype" : null,
+         "disk_reservation_count" : null,
+         "max_walltime" : null,
+         "production" : "YES",
+         "switch" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "opa" : null,
+         "besteffort" : "YES",
+         "myri" : null,
+         "core" : null,
+         "opa_rate" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "memcore" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "cluster" : "clusterb",
+         "id" : 18,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "eth_rate" : null,
+         "cpuset" : -1,
+         "drain" : "NO",
+         "network_address" : "",
+         "suspended_jobs" : "NO",
+         "opa_count" : null,
+         "ib_count" : null,
+         "expiry_date" : 0,
+         "cpufreq" : null,
+         "myri_count" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "deploy" : "YES",
+         "last_job_date" : 0
+      },
+      {
+         "eth_rate" : null,
+         "drain" : "NO",
+         "network_address" : "",
+         "suspended_jobs" : "NO",
+         "cpuset" : -1,
+         "last_job_date" : 0,
+         "myri_count" : null,
+         "cpufreq" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "deploy" : "YES",
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "opa_count" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "opa_rate" : null,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 19,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcore" : null,
+         "besteffort" : "YES",
+         "myri" : null,
+         "core" : null,
+         "opa" : null,
+         "disktype" : null,
+         "mic" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "switch" : null,
+         "max_walltime" : null,
+         "production" : "YES",
+         "disk_reservation_count" : null,
+         "eth_count" : null,
+         "myri_rate" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-1.fakesite.grid5000.fr",
+         "type" : "disk",
+         "ib" : null,
+         "state_num" : 1,
+         "api_timestamp" : 1569497994,
+         "memcpu" : null,
+         "gpudevice" : null,
+         "gpu_count" : null,
+         "wattmeter" : null,
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "href" : "//oarapi/resources/19",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/19/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "cputype" : null,
+         "disk" : "sdd.clusterb-1",
+         "next_finaud_decision" : "NO",
+         "ib_rate" : null,
+         "gpu_model" : null,
+         "finaud_decision" : "NO",
+         "gpu" : null
+      },
+      {
+         "besteffort" : "YES",
+         "core" : 17,
+         "myri" : "NO",
+         "opa" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "last_job_date" : 0,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "cluster" : "clusterb",
+         "id" : 20,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/20",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/20/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 5,
+         "finaud_decision" : "NO",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "diskpath" : null,
+         "switch" : null,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1
+      },
+      {
+         "besteffort" : "YES",
+         "core" : 18,
+         "myri" : "NO",
+         "opa" : "NO",
+         "suspended_jobs" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 1,
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "id" : 21,
+         "cluster" : "clusterb",
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/21",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/21/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "finaud_decision" : "NO",
+         "gpu" : 5,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO"
+      },
+      {
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 19,
+         "besteffort" : "YES",
+         "ip" : "172.16.64.2",
+         "cpuarch" : "x86_64",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 22,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_count" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "last_job_date" : 0,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 2,
+         "gpu" : 5,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/22",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/22/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "state" : "Alive",
+         "scheduler_priority" : 0
+      },
+      {
+         "diskpath" : null,
+         "switch" : null,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/23",
+               "rel" : "self"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/23/jobs"
+            }
+         ],
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 0,
+         "gpu_count" : 4,
+         "finaud_decision" : "NO",
+         "gpu" : 5,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "cpu" : 3,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa_count" : 0,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 3,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 23,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "core" : 20,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO"
+      },
+      {
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/24",
+               "rel" : "self"
+            },
+            {
+               "href" : "//oarapi/resources/24/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "gpu" : 6,
+         "finaud_decision" : "NO",
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "diskpath" : null,
+         "switch" : null,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "core" : 21,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "last_job_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 4,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 24,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0
+      },
+      {
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "finaud_decision" : "NO",
+         "gpu" : 6,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 1,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/25",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/25/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 25,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 5,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 22,
+         "myri" : "NO"
+      },
+      {
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 23,
+         "myri" : "NO",
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "cluster" : "clusterb",
+         "id" : 26,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 6,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "last_job_date" : 0,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "opa_count" : 0,
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 6,
+         "finaud_decision" : "NO",
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 1,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/26",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/26/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400
+      },
+      {
+         "gpu" : 6,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/27"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/27/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 1,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 24,
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "cluster" : "clusterb",
+         "id" : 27,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "last_job_date" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "cpu" : 3,
+         "deploy" : "NO",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "cpuset" : 7,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO"
+      },
+      {
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "gpu" : 7,
+         "finaud_decision" : "NO",
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/28"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/28/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 25,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "id" : 28,
+         "cluster" : "clusterb",
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 8,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpu" : 4,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "opa_count" : 0
+      },
+      {
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 26,
+         "memnode" : 131072,
+         "available_upto" : 2147483647,
+         "opa_rate" : 0,
+         "cluster" : "clusterb",
+         "id" : 29,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "drain" : "NO",
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO",
+         "cpuset" : 9,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "deploy" : "NO",
+         "cpucore" : 8,
+         "cpu" : 4,
+         "last_job_date" : 0,
+         "opa_count" : 0,
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "finaud_decision" : "NO",
+         "gpu" : 7,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/29"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/29/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400
+      },
+      {
+         "gpu" : 7,
+         "finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr"
+            },
+            {
+               "href" : "//oarapi/resources/30",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/30/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : 4,
+         "gpudevice" : 2,
+         "ib" : "NO",
+         "type" : "default",
+         "state_num" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "switch" : null,
+         "diskpath" : null,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "opa" : "NO",
+         "core" : 27,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "id" : 30,
+         "cluster" : "clusterb",
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "cpucore" : 8,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 4,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "opa_count" : 0,
+         "eth_rate" : 10,
+         "cpuset" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO"
+      },
+      {
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/31"
+            },
+            {
+               "rel" : "collection",
+               "href" : "//oarapi/resources/31/jobs",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 2,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "finaud_decision" : "NO",
+         "gpu" : 7,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "next_state" : "UnChanged",
+         "nodemodel" : "Dell PowerEdge T640",
+         "core" : 28,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO",
+         "opa_count" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "cpu" : 4,
+         "cpucore" : 8,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 11,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "cluster" : "clusterb",
+         "id" : 31,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072
+      },
+      {
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/32"
+            },
+            {
+               "title" : "jobs",
+               "rel" : "collection",
+               "href" : "//oarapi/resources/32/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpu" : 8,
+         "finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "cputype" : "Intel Xeon Silver 4110",
+         "opa_count" : 0,
+         "cpu" : 4,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "cpuset" : 12,
+         "suspended_jobs" : "NO",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 32,
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "core" : 29,
+         "myri" : "NO",
+         "besteffort" : "YES",
+         "opa" : "NO"
+      },
+      {
+         "finaud_decision" : "NO",
+         "gpu" : 8,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "ib_rate" : 0,
+         "next_finaud_decision" : "NO",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/33"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/33/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : "MULTIPLE",
+         "gpu_count" : 4,
+         "gpudevice" : 5,
+         "memcpu" : 65535,
+         "api_timestamp" : 1569497994,
+         "state_num" : 1,
+         "ib" : "NO",
+         "type" : "default",
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "disk_reservation_count" : 3,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "switch" : null,
+         "diskpath" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "disktype" : "SATAA",
+         "mic" : "NO",
+         "opa" : "NO",
+         "myri" : "NO",
+         "core" : 30,
+         "besteffort" : "YES",
+         "memcore" : 8192,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "cluster" : "clusterb",
+         "id" : 33,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_count" : 0,
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "myri_count" : 0,
+         "cpucore" : 8,
+         "cpufreq" : "2.1",
+         "cpu" : 4,
+         "deploy" : "NO",
+         "last_job_date" : 0,
+         "cpuset" : 14,
+         "eth_rate" : 10,
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "suspended_jobs" : "NO"
+      },
+      {
+         "opa_rate" : 0,
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "virtual" : "ivt",
+         "desktop_computing" : "NO",
+         "cluster" : "clusterb",
+         "id" : 34,
+         "eth_rate" : 10,
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : 14,
+         "opa_count" : 0,
+         "cpufreq" : "2.1",
+         "myri_count" : 0,
+         "last_job_date" : 0,
+         "cpucore" : 8,
+         "cpu" : 4,
+         "deploy" : "NO",
+         "ib_count" : 0,
+         "expiry_date" : 0,
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "myri" : "NO",
+         "core" : 31,
+         "myri_rate" : 0,
+         "eth_count" : 1,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : "Dell PowerEdge T640",
+         "state_num" : 1,
+         "type" : "default",
+         "ib" : "NO",
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "max_walltime" : 86400,
+         "production" : "YES",
+         "disk_reservation_count" : 3,
+         "diskpath" : null,
+         "switch" : null,
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "disk" : null,
+         "cputype" : "Intel Xeon Silver 4110",
+         "next_finaud_decision" : "NO",
+         "gpu" : 8,
+         "finaud_decision" : "NO",
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "maintenance" : "NO",
+         "cluster_priority" : 201906,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/34",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/34/jobs"
+            }
+         ],
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0
+      },
+      {
+         "opa" : "NO",
+         "besteffort" : "YES",
+         "core" : 32,
+         "myri" : "NO",
+         "available_upto" : 2147483647,
+         "memnode" : 131072,
+         "opa_rate" : 0,
+         "desktop_computing" : "NO",
+         "virtual" : "ivt",
+         "id" : 35,
+         "cluster" : "clusterb",
+         "cpuarch" : "x86_64",
+         "ip" : "172.16.64.2",
+         "memcore" : 8192,
+         "eth_rate" : 10,
+         "suspended_jobs" : "NO",
+         "drain" : "NO",
+         "network_address" : "clusterb-2.fakesite.grid5000.fr",
+         "cpuset" : 15,
+         "myri_count" : 0,
+         "cpufreq" : "2.1",
+         "cpu" : 4,
+         "cpucore" : 8,
+         "last_job_date" : 0,
+         "deploy" : "NO",
+         "expiry_date" : 0,
+         "ib_count" : 0,
+         "opa_count" : 0,
+         "cputype" : "Intel Xeon Silver 4110",
+         "disk" : null,
+         "next_finaud_decision" : "NO",
+         "ib_rate" : 0,
+         "gpu_model" : "GeForce RTX 2080 Ti",
+         "gpu" : 8,
+         "finaud_decision" : "NO",
+         "api_timestamp" : 1569497994,
+         "memcpu" : 65535,
+         "gpudevice" : 3,
+         "gpu_count" : 4,
+         "wattmeter" : "MULTIPLE",
+         "last_available_upto" : 0,
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "href" : "//oarapi/resources/nodes/clusterb-2.fakesite.grid5000.fr",
+               "rel" : "member",
+               "title" : "node"
+            },
+            {
+               "href" : "//oarapi/resources/35",
+               "rel" : "self"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/35/jobs"
+            }
+         ],
+         "cluster_priority" : 201906,
+         "eth_count" : 1,
+         "myri_rate" : 0,
+         "nodemodel" : "Dell PowerEdge T640",
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "type" : "default",
+         "ib" : "NO",
+         "state_num" : 1,
+         "mic" : "NO",
+         "disktype" : "SATAA",
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "diskpath" : null,
+         "switch" : null,
+         "production" : "YES",
+         "max_walltime" : 86400,
+         "disk_reservation_count" : 3
+      },
+      {
+         "state_num" : 1,
+         "type" : "disk",
+         "ib" : null,
+         "myri_rate" : null,
+         "eth_count" : null,
+         "next_state" : "UnChanged",
+         "nodemodel" : null,
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "max_walltime" : null,
+         "production" : "YES",
+         "disk_reservation_count" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+         "switch" : null,
+         "disktype" : null,
+         "mic" : null,
+         "scheduler_priority" : 0,
+         "state" : "Alive",
+         "finaud_decision" : "NO",
+         "gpu" : null,
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "disk" : "sdb.clusterb-2",
+         "cputype" : null,
+         "next_finaud_decision" : "NO",
+         "maintenance" : "NO",
+         "links" : [
+            {
+               "title" : "node",
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/36"
+            },
+            {
+               "href" : "//oarapi/resources/36/jobs",
+               "rel" : "collection",
+               "title" : "jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "wattmeter" : null,
+         "last_available_upto" : 0,
+         "gpudevice" : null,
+         "gpu_count" : null,
+         "api_timestamp" : 1569497994,
+         "memcpu" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcore" : null,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "id" : 36,
+         "cluster" : "clusterb",
+         "opa_rate" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "opa_count" : null,
+         "myri_count" : null,
+         "last_job_date" : 0,
+         "cpufreq" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "deploy" : "YES",
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "suspended_jobs" : "NO",
+         "eth_rate" : null,
+         "drain" : "NO",
+         "network_address" : "",
+         "cpuset" : -1,
+         "opa" : null,
+         "myri" : null,
+         "core" : null,
+         "besteffort" : "YES"
+      },
+      {
+         "besteffort" : "YES",
+         "core" : null,
+         "myri" : null,
+         "opa" : null,
+         "eth_rate" : null,
+         "network_address" : "",
+         "drain" : "NO",
+         "cpuset" : -1,
+         "suspended_jobs" : "NO",
+         "ib_count" : null,
+         "expiry_date" : 0,
+         "cpufreq" : null,
+         "myri_count" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "last_job_date" : 0,
+         "deploy" : "YES",
+         "opa_count" : null,
+         "available_upto" : 0,
+         "memnode" : null,
+         "opa_rate" : null,
+         "id" : 37,
+         "cluster" : "clusterb",
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "memcore" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "memcpu" : null,
+         "api_timestamp" : 1569497994,
+         "gpu_count" : null,
+         "gpudevice" : null,
+         "last_available_upto" : 0,
+         "wattmeter" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "href" : "//oarapi/resources/nodes/",
+               "title" : "node"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/37"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/37/jobs"
+            }
+         ],
+         "cluster_priority" : null,
+         "maintenance" : "NO",
+         "disk" : "sdc.clusterb-2",
+         "cputype" : null,
+         "next_finaud_decision" : "NO",
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "finaud_decision" : "NO",
+         "gpu" : null,
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "disktype" : null,
+         "mic" : null,
+         "switch" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+         "disk_reservation_count" : null,
+         "production" : "YES",
+         "max_walltime" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "nodemodel" : null,
+         "myri_rate" : null,
+         "eth_count" : null,
+         "ib" : null,
+         "type" : "disk",
+         "state_num" : 1
+      },
+      {
+         "gpu_model" : null,
+         "ib_rate" : null,
+         "next_finaud_decision" : "NO",
+         "disk" : "sdd.clusterb-2",
+         "cputype" : null,
+         "gpu" : null,
+         "finaud_decision" : "NO",
+         "gpu_count" : null,
+         "gpudevice" : null,
+         "memcpu" : null,
+         "api_timestamp" : 1569497994,
+         "cluster_priority" : null,
+         "links" : [
+            {
+               "rel" : "member",
+               "title" : "node",
+               "href" : "//oarapi/resources/nodes/"
+            },
+            {
+               "rel" : "self",
+               "href" : "//oarapi/resources/38"
+            },
+            {
+               "rel" : "collection",
+               "title" : "jobs",
+               "href" : "//oarapi/resources/38/jobs"
+            }
+         ],
+         "maintenance" : "NO",
+         "last_available_upto" : 0,
+         "wattmeter" : null,
+         "nodemodel" : null,
+         "next_state" : "UnChanged",
+         "host" : "clusterb-2.fakesite.grid5000.fr",
+         "eth_count" : null,
+         "myri_rate" : null,
+         "state_num" : 1,
+         "ib" : null,
+         "type" : "disk",
+         "state" : "Alive",
+         "scheduler_priority" : 0,
+         "mic" : null,
+         "disktype" : null,
+         "disk_reservation_count" : null,
+         "production" : "YES",
+         "max_walltime" : null,
+         "switch" : null,
+         "diskpath" : "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+         "opa" : null,
+         "besteffort" : "YES",
+         "core" : null,
+         "myri" : null,
+         "opa_rate" : null,
+         "memnode" : null,
+         "available_upto" : 0,
+         "memcore" : null,
+         "cpuarch" : null,
+         "ip" : null,
+         "cluster" : "clusterb",
+         "id" : 38,
+         "virtual" : null,
+         "desktop_computing" : "NO",
+         "network_address" : "",
+         "eth_rate" : null,
+         "drain" : "NO",
+         "suspended_jobs" : "NO",
+         "cpuset" : -1,
+         "opa_count" : null,
+         "expiry_date" : 0,
+         "ib_count" : null,
+         "myri_count" : null,
+         "deploy" : "YES",
+         "cpufreq" : null,
+         "cpucore" : null,
+         "cpu" : null,
+         "last_job_date" : 0
+      }
+   ],
+   "links" : [
+      {
+         "rel" : "self",
+         "href" : "//oarapi/resources/details.json?limit=999999&offset=0"
+      }
+   ]
+}
+
diff --git a/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_misconfigured_server_with_disk.json b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_misconfigured_server_with_disk.json
new file mode 100644
index 00000000000..5361202d115
--- /dev/null
+++ b/spec/stub_oar_properties/load_data_hierarchy_stubbed_data_misconfigured_server_with_disk.json
@@ -0,0 +1,1527 @@
+{
+  "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"
+        },
+        "clusterb": {
+          "nodes": {
+            "clusterb-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": "clusterb-2.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterb-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": "clusterb-pdu1"
+                      },
+                      {
+                        "port": 6,
+                        "uid": "clusterb-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterb-2"
+            },
+            "clusterb-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": "clusterb-1.fakesite.grid5000.fr",
+                  "rate": 10000000000,
+                  "switch": null,
+                  "switch_port": null,
+                  "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": "clusterb-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": "clusterb-pdu1"
+                      },
+                      {
+                        "port": 1,
+                        "uid": "clusterb-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)"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973c8a1ad9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:1:0",
+                  "device": "sdb",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "AM04",
+                  "interface": "SAS",
+                  "model": "PX04SMB040",
+                  "reservation": true,
+                  "size": 400088457216,
+                  "storage": "SSD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828eb",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:2:0",
+                  "device": "sdc",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                },
+                {
+                  "by_id": "/dev/disk/by-id/wwn-0x500003973be828e9",
+                  "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:0:3:0",
+                  "device": "sdd",
+                  "driver": "megaraid_sas",
+                  "firmware_version": "FJ2D",
+                  "interface": "SATA",
+                  "model": "TOSHIBA MG04ACA4",
+                  "reservation": true,
+                  "size": 4000787030016,
+                  "storage": "HDD",
+                  "vendor": "Toshiba"
+                }
+              ],
+              "supported_job_types": {
+                "besteffort": true,
+                "deploy": true,
+                "max_walltime": 86400,
+                "queues": [
+                  "admin",
+                  "production"
+                ],
+                "virtual": "ivt"
+              },
+              "type": "node",
+              "uid": "clusterb-1"
+            }
+          },
+          "created_at": "Fri, 07 Jun 2019 00:00:00 GMT",
+          "kavlan": false,
+          "model": "Dell PowerEdge T640",
+          "queues": [
+            "admin",
+            "production"
+          ],
+          "type": "cluster",
+          "uid": "clusterb"
+        }
+      },
+      "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/mediawiki/index.php/Fakesite:Home"
+    }
+  },
+  "network_equipments": {
+    "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": {}
+    },
+    "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-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-paris": {
+      "kind": "virtual",
+      "linecards": [
+        {
+          "ports": [
+            {
+              "uid": "renater-lille"
+            },
+            {
+              "uid": "renater-lyon"
+            },
+            {
+              "uid": "renater-nancy"
+            }
+          ],
+          "rate": 10000000000
+        }
+      ],
+      "type": "network_equipment",
+      "uid": "renater-paris",
+      "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-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-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-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-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": {}
+    }
+  },
+  "type": "grid",
+  "uid": "grid5000"
+}
-- 
GitLab