dev/provisioning/modules/puppi/files/mcollective/puppi.rb
changeset 28 b0b56e0f8c7f
equal deleted inserted replaced
27:a2342f26c9de 28:b0b56e0f8c7f
       
     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