diff --git a/lib/refrepo/gen/wiki/generators/site_hardware.rb b/lib/refrepo/gen/wiki/generators/site_hardware.rb
index 992b8517783750f15a27b91616362dd1cda816e0..5ca121c672acc80590517ba4a920bb5d907a5a94 100644
--- a/lib/refrepo/gen/wiki/generators/site_hardware.rb
+++ b/lib/refrepo/gen/wiki/generators/site_hardware.rb
@@ -102,6 +102,18 @@ class SiteHardwareGenerator < WikiGenerator
     [table_columns, table_data]
   end
 
+  def self.get_queue_drawgantt_url(site, queue)
+    url = "https://intranet.grid5000.fr/oar/#{site.capitalize}/"
+    if (queue == 'production')
+      url += "drawgantt-svg-prod/"
+    #elsif (queue == 'testing')
+    #  url += "drawgantt-svg/?filter=with%20testing" # Here we miss a filter "only testing"
+    else
+      url += "drawgantt-svg/"
+    end
+    url
+  end
+
   def self.generate_description(site)
     table_columns = []
     text_data = []
@@ -117,7 +129,12 @@ class SiteHardwareGenerator < WikiGenerator
     # Alphabetic ordering of queue names matches what we want: "default" < "production" < "testing"
     hardware[site].group_by { |cluster_uid, cluster_hash| cluster_hash.map { |k, v| v['queue']}.first }.sort.each { |queue, clusters|
       queue = (queue.nil? || queue.empty?) ? 'default' : queue
-      text_data << "\n= Clusters in #{queue} queue ="
+      queue_drawgantt_url = get_queue_drawgantt_url(site, queue)
+      if (queue != 'testing')
+        text_data << "\n= Clusters in the [#{queue_drawgantt_url} #{queue} queue] ="
+      else
+        text_data << "\n= Clusters in the #{queue} queue ="
+      end
       clusters.sort.to_h.each { |cluster_uid, cluster_hash|
         subclusters = cluster_hash.keys.count != 1
         cluster_nodes = cluster_hash.keys.flatten.count
@@ -129,7 +146,8 @@ class SiteHardwareGenerator < WikiGenerator
         access_conditions << "exotic job type" if cluster_hash.map { |k, v| v['exotic']}.first
         table_columns = ['Cluster',  'Queue', 'Date of arrival', { attributes: 'data-sort-type="number"', text: 'Nodes' }, 'CPU', { attributes: 'data-sort-type="number"', text: 'Cores' }, { attributes: 'data-sort-type="number"', text: 'Memory' }, { attributes: 'data-sort-type="number"', text: 'Storage' }, { attributes: 'data-sort-type="number"', text: 'Network' }] + (site_accelerators.zero? ? [] : ['Accelerators'])
 
-        text_data <<  ["\n== #{cluster_uid} ==\n"]
+        cluster_drawgantt_url = get_queue_drawgantt_url(site, queue)+"?filter=#{cluster_uid}%20only"
+        text_data <<  ["\n== [#{cluster_drawgantt_url} #{cluster_uid}] ==\n"]
         text_data << ["'''#{cluster_nodes} #{G5K.pluralize(cluster_nodes, 'node')}, #{cluster_cpus} #{G5K.pluralize(cluster_cpus, 'cpu')}, #{cluster_cores} #{G5K.pluralize(cluster_cores, 'core')}" + (subclusters == true ? ",''' split as follows due to differences between nodes " : "''' ") + "([https://public-api.grid5000.fr/stable/sites/#{site}/clusters/#{cluster_uid}/nodes.json?pretty=1 json])"]
 
         reservation_cmd = "\n{{Term|location=f#{site}|cmd="