From 0537634773d01641ad3f135ccd1a2de28d1fd402 Mon Sep 17 00:00:00 2001
From: Simon Delamare <simon.delamare@ens-lyon.fr>
Date: Tue, 19 May 2020 10:54:32 +0200
Subject: [PATCH] [lib] Update kwollect generator to support labels

---
 lib/refrepo/gen/puppet/templates/kwollect-network.erb | 4 +++-
 lib/refrepo/gen/puppet/templates/kwollect-node.erb    | 2 +-
 lib/refrepo/gen/puppet/templates/kwollect-pdu.erb     | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/refrepo/gen/puppet/templates/kwollect-network.erb b/lib/refrepo/gen/puppet/templates/kwollect-network.erb
index eef8059b95..9d7e9864fa 100644
--- a/lib/refrepo/gen/puppet/templates/kwollect-network.erb
+++ b/lib/refrepo/gen/puppet/templates/kwollect-network.erb
@@ -14,10 +14,12 @@ neteq.fetch('metrics', []).each {|metric|
         port_name = lport['snmp_name']
         # TODO: Handle secondary interface
         port_node = lport['uid']
+        labels = lport['kind'] == 'node' ? {'interface': lport['port']} : {}
+        labels.update({'_device_alias': port_node})
 -%>
 - name: <%= metric['name'] %>
   device_id: <%= neteq_uid %>-port-<%= port_uid %>
-  device_alias: <%= port_node %>
+  labels: <%= labels.to_json %>
   url: snmp://<%= neteq.fetch('snmp_community', 'public')%>@<%= neteq_uid %>.<%= site_uid %>.grid5000.fr/<%= metric['source']['id'].sub('%SNMP_IFACE%',  "{{ #{port_name} }}") %>
   update_every: <%= metric['period'] > 0 ? metric['period'] : metric['optional_period'] %>
 <%- if metric['period'] == 0 -%>
diff --git a/lib/refrepo/gen/puppet/templates/kwollect-node.erb b/lib/refrepo/gen/puppet/templates/kwollect-node.erb
index b7d7363b21..6b1aab0bcb 100644
--- a/lib/refrepo/gen/puppet/templates/kwollect-node.erb
+++ b/lib/refrepo/gen/puppet/templates/kwollect-node.erb
@@ -22,7 +22,7 @@ cluster.fetch('metrics', []).each {|metric|
 - name: <%= metric['name'] %>
   device_id: <%= node_uid %>
   url: <%= metric['source']['protocol'] %>://<%= auth %><%= node_uid %>-bmc.<%= site_uid %>.grid5000.fr/<%= metric['source']['id'] %>
-  device_alias: <%= node_uid %>-bmc
+  labels: <%= metric.fetch('labels', {}).update({'_device_alias': node_uid+'-bmc'}).to_json %>
   update_every: <%= metric['period'] > 0 ? metric['period'] : metric['optional_period'] %>
 <%- if metric['period'] == 0 -%>
   optional: true
diff --git a/lib/refrepo/gen/puppet/templates/kwollect-pdu.erb b/lib/refrepo/gen/puppet/templates/kwollect-pdu.erb
index 2a87b87c7e..792a8535e1 100644
--- a/lib/refrepo/gen/puppet/templates/kwollect-pdu.erb
+++ b/lib/refrepo/gen/puppet/templates/kwollect-pdu.erb
@@ -14,7 +14,7 @@ pdu.fetch('metrics', []).each {|metric|
 - name: <%= metric['name'] %>
   device_id: <%= pdu_uid %>-port-<%= port_uid %>
 <%- if single_port -%>
-  device_alias: <%= node_uid %>
+  labels: <%= {'_device_alias': node_uid}.to_json %>
 <%- end -%>
   url: snmp://<%= pdu.fetch('snmp_community', 'public')%>@<%= pdu_uid %>.<%= site_uid %>.grid5000.fr/<%= metric['source']['id'].sub('%PORT%',  "#{port_uid}") %>
   update_every: <%= metric['period'] > 0 ? metric['period'] : metric['optional_period'] %>
-- 
GitLab