|
1 #!/usr/bin/env ruby |
|
2 |
|
3 # Client program for the mcollective puppi agent |
|
4 # |
|
5 # Released under Apache License 2.0 |
|
6 |
|
7 require 'mcollective' |
|
8 |
|
9 include MCollective::RPC |
|
10 |
|
11 options = rpcoptions do |parser, options| |
|
12 options[:timeout] = 180 |
|
13 |
|
14 parser.define_head "Execute Puppi commands" |
|
15 parser.banner = "Usage: mc-puppi [filters] command [project] [puppioptions]" |
|
16 parser.separator "" |
|
17 parser.separator "Available commands:" |
|
18 parser.separator " check [project] - Run puppi check" |
|
19 parser.separator " info [topic] - Run puppi info. For all or specified topic" |
|
20 parser.separator " log [topic] - Run puppi log. For all or specified topic" |
|
21 parser.separator " todo - Run puppi todo" |
|
22 parser.separator " deploy <project> - Run puppi deploy on the defined project" |
|
23 parser.separator " configure <project> - Run puppi configure on the defined project" |
|
24 parser.separator " rollback <project> - Run puppi rollback latest on the defined project" |
|
25 parser.separator " init <project> - Run puppi init on the defined project" |
|
26 end |
|
27 |
|
28 if MCollective::Util.empty_filter?(options[:filter]) |
|
29 print("Do you really want to operate on services unfiltered? (y/n): ") |
|
30 STDOUT.flush |
|
31 |
|
32 exit unless STDIN.gets.chomp =~ /^y$/ |
|
33 end |
|
34 |
|
35 if ARGV.length >= 1 |
|
36 command = ARGV.shift |
|
37 project = ARGV.shift |
|
38 puppioptions = ARGV.shift |
|
39 |
|
40 unless command =~ /^(check|deploy|rollback|init|configure|info|log|todo)$/ |
|
41 puts("Command has to be check|info|log|deploy|rollback|init|configure|todo") |
|
42 exit 1 |
|
43 end |
|
44 else |
|
45 puts("Please specify at least a command") |
|
46 exit 1 |
|
47 end |
|
48 |
|
49 mc = rpcclient("puppi", :options => options) |
|
50 mc.progress = true |
|
51 # mc.send(command, {:project => project}) do |resp| |
|
52 args = {}; |
|
53 args[:project] = project if project |
|
54 args[:puppioptions] = puppioptions if puppioptions |
|
55 mc.send(command, args) do |resp| |
|
56 begin |
|
57 # puts resp[:serverid] |
|
58 puts resp[:body][:data] |
|
59 # puts resp[:body][:exitcode] |
|
60 |
|
61 rescue RPCError => er |
|
62 puts "RPC Agent error: #{er}" |
|
63 end |
|
64 end |
|
65 |