|
1 module MCollective |
|
2 module Agent |
|
3 class Puppi<RPC::Agent |
|
4 metadata :name => "SimpleRPC Agent For PUPPI Commands", |
|
5 :description => "Agent to execute PUPPI actions via MCollective", |
|
6 :author => "Al @ Lab42", |
|
7 :license => "Apache License 2.0", |
|
8 :version => "0.3", |
|
9 :url => "http://www.example42.com/", |
|
10 :timeout => 600 |
|
11 |
|
12 def check_action |
|
13 # validate :project, :shellsafe |
|
14 project = request[:project] if request[:project] |
|
15 reply.data = %x[puppi check #{project}].chomp |
|
16 if ($?.exitstatus > 0) |
|
17 reply.fail "FAILED: #{reply.data}" |
|
18 end |
|
19 end |
|
20 |
|
21 def info_action |
|
22 # validate :project, :shellsafe |
|
23 project = request[:project] if request[:project] |
|
24 reply.data = %x[puppi info #{project}].chomp |
|
25 if ($?.exitstatus > 0) |
|
26 reply.fail "FAILED: #{reply.data}" |
|
27 end |
|
28 end |
|
29 |
|
30 def log_action |
|
31 # validate :project, :shellsafe |
|
32 project = request[:project] if request[:project] |
|
33 reply.data = %x[puppi log #{project} -c 10].chomp |
|
34 if ($?.exitstatus > 0) |
|
35 reply.fail "FAILED: #{reply.data}" |
|
36 end |
|
37 end |
|
38 |
|
39 def deploy_action |
|
40 validate :project, :shellsafe |
|
41 project = request[:project] if request[:project] |
|
42 if (!File.directory? "/etc/puppi/projects/#{project}") |
|
43 reply.fail "No such project #{project}" |
|
44 return |
|
45 end |
|
46 puppioptions = request[:puppioptions] |
|
47 reply.data = %x[puppi deploy #{project} -o "#{puppioptions}"].chomp |
|
48 if ($?.exitstatus > 0) |
|
49 reply.fail "FAILED: #{reply.data}" |
|
50 end |
|
51 end |
|
52 |
|
53 def rollback_action |
|
54 validate :project, :shellsafe |
|
55 project = request[:project] if request[:project] |
|
56 reply.data = %x[puppi rollback #{project} latest].chomp |
|
57 if ($?.exitstatus > 0) |
|
58 reply.fail "FAILED: #{reply.data}" |
|
59 end |
|
60 end |
|
61 |
|
62 def init_action |
|
63 validate :project, :shellsafe |
|
64 project = request[:project] if request[:project] |
|
65 reply.data = %x[puppi init #{project}].chomp |
|
66 if ($?.exitstatus > 0) |
|
67 reply.fail "FAILED: #{reply.data}" |
|
68 end |
|
69 end |
|
70 |
|
71 def configure_action |
|
72 validate :project, :shellsafe |
|
73 project = request[:project] if request[:project] |
|
74 reply.data = %x[puppi configure #{project}].chomp |
|
75 if ($?.exitstatus > 0) |
|
76 reply.fail "FAILED: #{reply.data}" |
|
77 end |
|
78 end |
|
79 |
|
80 end |
|
81 end |
|
82 end |
|
83 # vi:tabstop=4:expandtab:ai |