From ad9898fa36b3c69e9726aa9c61aa2d93d933207e Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Thu, 7 Feb 2013 16:30:33 +0100 Subject: [PATCH] feature #1739: change ganglia probes to get all vms info --- src/im_mad/remotes/ganglia.d/ganglia_probe | 2 +- src/vmm_mad/remotes/poll_ganglia.rb | 67 +++++++++++++++------- 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/src/im_mad/remotes/ganglia.d/ganglia_probe b/src/im_mad/remotes/ganglia.d/ganglia_probe index 1fc6a43071..2be364e322 100755 --- a/src/im_mad/remotes/ganglia.d/ganglia_probe +++ b/src/im_mad/remotes/ganglia.d/ganglia_probe @@ -87,5 +87,5 @@ info.each do |key, value| GangliaHost.print_info(key, value) end - +system("../../vmm/kvm/poll_ganglia #{host}") diff --git a/src/vmm_mad/remotes/poll_ganglia.rb b/src/vmm_mad/remotes/poll_ganglia.rb index c151dfacbc..97a1dedf43 100755 --- a/src/vmm_mad/remotes/poll_ganglia.rb +++ b/src/vmm_mad/remotes/poll_ganglia.rb @@ -49,9 +49,34 @@ GANGLIA_PORT=8649 #GANGLIA_FILE='data.xml' -domain=ARGV[0] -dom_id=ARGV[2] -host=ARGV[1] +def info_string(dom_info) + if dom_info + info=dom_info.map do |key, value| + "#{key.to_s.upcase}=#{value}" + end.join(' ') + else + '' + end +end + +def vm_info(name, dom_info) + number=name.split('-').last + string="VM=[\n" + string<<" ID=\"#{number}\",\n" + string<<" POLL=\"#{info_string(dom_info)}\" ]" + string +end + + +if ARGV.length==1 + host=ARGV[0] + ALL=true +else + domain=ARGV[0] + dom_id=ARGV[2] + host=ARGV[1] + ALL=false +end # Gets monitoring data from ganglia or file begin @@ -66,24 +91,24 @@ rescue end doms_info=ganglia.get_vms_information -dom_id=domain.split('-').last -# Unknown state when the VM is not found -if !doms_info || !(doms_info[domain] || doms_info[dom_id]) - puts "STATE=d" - exit(0) +if !ALL + dom_id=domain.split('-').last + + # Unknown state when the VM is not found + if !doms_info || !(doms_info[domain] || doms_info[dom_id]) + puts "STATE=d" + exit(0) + end + + # Get key one- or key from the hash + dom_info=doms_info[domain] + dom_info=doms_info[dom_id] if !dom_info + + puts info_string(dom_info) +else + doms_info.each do |name, data| + puts vm_info(name, data) + end end -# Get key one- or key from the hash -dom_info=doms_info[domain] -dom_info=doms_info[dom_id] if !dom_info - -if dom_info - info=dom_info.map do |key, value| - "#{key.to_s.upcase}=#{value}" - end.join(' ') - - puts info -end - -