phpservermon/puphpet/puppet/modules/puppi/files/mcollective/mc-puppi

66 lines
2.0 KiB
Ruby

#!/usr/bin/env ruby
# Client program for the mcollective puppi agent
#
# Released under Apache License 2.0
require 'mcollective'
include MCollective::RPC
options = rpcoptions do |parser, options|
options[:timeout] = 180
parser.define_head "Execute Puppi commands"
parser.banner = "Usage: mc-puppi [filters] command [project] [puppioptions]"
parser.separator ""
parser.separator "Available commands:"
parser.separator " check [project] - Run puppi check"
parser.separator " info [topic] - Run puppi info. For all or specified topic"
parser.separator " log [topic] - Run puppi log. For all or specified topic"
parser.separator " todo - Run puppi todo"
parser.separator " deploy <project> - Run puppi deploy on the defined project"
parser.separator " configure <project> - Run puppi configure on the defined project"
parser.separator " rollback <project> - Run puppi rollback latest on the defined project"
parser.separator " init <project> - Run puppi init on the defined project"
end
if MCollective::Util.empty_filter?(options[:filter])
print("Do you really want to operate on services unfiltered? (y/n): ")
STDOUT.flush
exit unless STDIN.gets.chomp =~ /^y$/
end
if ARGV.length >= 1
command = ARGV.shift
project = ARGV.shift
puppioptions = ARGV.shift
unless command =~ /^(check|deploy|rollback|init|configure|info|log|todo)$/
puts("Command has to be check|info|log|deploy|rollback|init|configure|todo")
exit 1
end
else
puts("Please specify at least a command")
exit 1
end
mc = rpcclient("puppi", :options => options)
mc.progress = true
# mc.send(command, {:project => project}) do |resp|
args = {};
args[:project] = project if project
args[:puppioptions] = puppioptions if puppioptions
mc.send(command, args) do |resp|
begin
# puts resp[:serverid]
puts resp[:body][:data]
# puts resp[:body][:exitcode]
rescue RPCError => er
puts "RPC Agent error: #{er}"
end
end