dev/provisioning/modules/puppi/files/mcollective/mc-puppi
changeset 28 b0b56e0f8c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/puppi/files/mcollective/mc-puppi	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,65 @@
+#!/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
+