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] 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 685a1bca81..a63e71041f 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 0a394bf3af..fbe37d3b1c 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 0000000000..a89a018b30
--- /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 0000000000..5361202d11
--- /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