dev/provisioning/modules/puppi/files/mcollective/puppi.rb
author ymh <ymh.work@gmail.com>
Fri, 15 Jan 2016 15:35:00 +0100
changeset 28 b0b56e0f8c7f
permissions -rwxr-xr-x
Add contributor edition - added viaf resolver - improve contributors list display - add update of document objects - propagate update to back office - update back office - add bo-client to back office - setup language initializer - add options mechanism - add language information in language list - add lexvo resolver service + api - add language and lexvo resolver to js app - correct env template - refresh bootstrap - download google font - add version information - update dev virtual machine to centos7 - add a readme + clean folders - add local .env file to start commands

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