Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 77f678d8 authored by Simon Delamare's avatar Simon Delamare
Browse files

[lib] Update kwollect generator to support PDU

parent 4d86db48
No related branches found
No related tags found
No related merge requests found
......@@ -47,6 +47,31 @@ def generate_puppet_kwollectg5k(options)
File.write(output_file, output)
}
# Metrics configuration for PDU
## First, parse all PDU to find nodes that use two PSUs
ports_by_node = {}
site.fetch('pdus', {}).each { |pdu_uid, pdu|
pdu.fetch('metrics', []).each {|metric|
next if metric['source']['protocol'] != 'snmp'
if metric['source']['id'].include?('%PORT%')
pdu['ports'].each {|port_uid, node_uid|
if not ports_by_node.has_key?(node_uid)
ports_by_node[node_uid] = []
end
ports_by_node[node_uid] << "#{pdu_uid}-port-#{port_uid}"
}
end
}
}
## Then, write PDU metrics config
site.fetch('pdus', {}).each { |pdu_uid, pdu|
output = ERB.new(File.read(File.expand_path('templates/kwollect-pdu.erb', File.dirname(__FILE__))), nil, '-').result(binding)
output_file = Pathname("#{options[:output_dir]}//platforms/production/modules/generated/files/grid5000/kwollect/#{site_uid}/#{pdu_uid}.conf")
output_file.dirname.mkpath()
File.write(output_file, output)
}
# Wattmetre mapping configuration
wattmetre_port_per_node = {}
site.fetch('pdus', {}).each { |pdu_uid, pdu|
......
......@@ -5,8 +5,10 @@
<%-
cluster.fetch('metrics', []).each {|metric|
# These are "virtual" metrics available for a node, but collected elsewhere
next if metric['source']['protocol'] == "wattmetre"
next if metric['source']['protocol'] == "network_equipment"
next if metric['source']['protocol'] == "pdu"
if metric['source']['protocol'] == "ipmisensor"
auth = ipmi_credentials+"@"
......
#
# This file was generated from reference-repository.git
# Do not edit this file by hand. Your changes will be overwritten.
#
<%-
pdu.fetch('metrics', []).each {|metric|
next if metric['source']['protocol'] != 'snmp'
if metric['source']['id'].include?('%PORT%')
pdu['ports'].each {|port_uid, node_uid|
# Map metric to node only for single PSU
single_port = ports_by_node[node_uid].length == 1
-%>
- name: <%= metric['name'] %>
device_id: <%= pdu_uid %>-port-<%= port_uid %>
<%- if single_port -%>
device_alias: <%= node_uid %>
<%- 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'] %>
<%- if metric['period'] == 0 -%>
optional: true
<%- end -%>
<%- if metric.has_key?('scale_factor') -%>
scale_factor: <%= metric['scale_factor'] %>
<%- end -%>
<%-
}
else
-%>
- name: <%= metric['name'] %>
device_id: <%= pdu_uid %>
url: snmp://<%= pdu.fetch('snmp_community', 'public')%>@<%= pdu_uid %>.<%= site_uid %>.grid5000.fr/<%= metric['source']['id'] %>
update_every: <%= metric['period'] > 0 ? metric['period'] : metric['optional_period'] %>
<%- if metric['period'] == 0 -%>
optional: true
<%- end -%>
<%- if metric.has_key?('scale_factor') -%>
scale_factor: <%= metric['scale_factor'] %>
<%- end -%>
<%-
end
}
-%>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment