dev/provisioning/modules/puppi/files/mcollective/puppi.rb
changeset 28 b0b56e0f8c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/puppi/files/mcollective/puppi.rb	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,83 @@
+module MCollective
+    module Agent
+        class Puppi<RPC::Agent
+            metadata    :name        => "SimpleRPC Agent For PUPPI Commands",
+                        :description => "Agent to execute PUPPI actions via MCollective",
+                        :author      => "Al @ Lab42",
+                        :license     => "Apache License 2.0",
+                        :version     => "0.3",
+                        :url         => "http://www.example42.com/",
+                        :timeout     => 600
+
+            def check_action
+#                   validate :project, :shellsafe
+                    project = request[:project] if request[:project]
+                    reply.data = %x[puppi check #{project}].chomp
+                    if ($?.exitstatus > 0)
+                      reply.fail "FAILED: #{reply.data}"
+                    end
+            end
+
+            def info_action
+#                   validate :project, :shellsafe
+                    project = request[:project] if request[:project]
+                    reply.data = %x[puppi info #{project}].chomp
+                    if ($?.exitstatus > 0)
+                      reply.fail "FAILED: #{reply.data}"
+                    end
+            end
+
+            def log_action
+#                   validate :project, :shellsafe
+                    project = request[:project] if request[:project]
+                    reply.data = %x[puppi log #{project} -c 10].chomp
+                    if ($?.exitstatus > 0)
+                      reply.fail "FAILED: #{reply.data}"
+                    end
+            end
+
+            def deploy_action
+                    validate :project, :shellsafe
+                    project = request[:project] if request[:project]
+                    if (!File.directory? "/etc/puppi/projects/#{project}")
+                      reply.fail "No such project #{project}"
+                      return
+                    end
+                    puppioptions = request[:puppioptions]
+                    reply.data = %x[puppi deploy #{project} -o "#{puppioptions}"].chomp
+                    if ($?.exitstatus > 0)
+                      reply.fail "FAILED: #{reply.data}"
+                    end
+            end
+
+            def rollback_action
+                    validate :project, :shellsafe
+                    project = request[:project] if request[:project]
+                    reply.data = %x[puppi rollback #{project} latest].chomp
+                    if ($?.exitstatus > 0)
+                      reply.fail "FAILED: #{reply.data}"
+                    end
+            end
+
+            def init_action
+                    validate :project, :shellsafe
+                    project = request[:project] if request[:project]
+                    reply.data = %x[puppi init #{project}].chomp
+                    if ($?.exitstatus > 0)
+                      reply.fail "FAILED: #{reply.data}"
+                    end
+            end
+            
+            def configure_action
+                  validate :project, :shellsafe
+                  project = request[:project] if request[:project]
+                  reply.data = %x[puppi configure #{project}].chomp
+                  if ($?.exitstatus > 0)
+                    reply.fail "FAILED: #{reply.data}"
+                  end
+            end
+
+        end
+    end
+end
+# vi:tabstop=4:expandtab:ai