/usr/sbin/mc-collectivemap is in mcollective-plugins-stomputil 0.0.0~git20120507.df2fa81-0ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #!/usr/bin/ruby
# Given a MCollective 1.1.3 or newer collective
# this will print as a dot graph a map of the collective
# and sub collectives
require 'mcollective'
include MCollective::RPC
def getcollectives(client)
collectives = {}
client.collective_info do |resp|
data = resp[:body][:data]
if data.include?(:collectives)
data[:collectives].each do |c|
collectives[c] = [] unless collectives.include?(c)
collectives[c] << resp[:senderid]
end
end
end
collectives
end
shelper = rpcclient("stomputil")
shelper.progress = false
collectives = getcollectives(shelper)
puts "graph {"
collectives.keys.sort.each do |collective|
puts "\tsubgraph #{collective} {"
collectives[collective].each do |member|
member_name = member.gsub('.', '_').gsub('-', '_')
puts "\t\t'#{member}' -- #{collective};"
end
puts "\t}"
end
puts "}"
|