prometheus-splash 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +31 -1
 - data/bin/splash +6 -364
 - data/lib/splash/backends.rb +1 -0
 - data/lib/splash/backends/file.rb +1 -0
 - data/lib/splash/backends/redis.rb +1 -3
 - data/lib/splash/cli.rb +20 -0
 - data/lib/splash/cli/commands.rb +164 -0
 - data/lib/splash/cli/config.rb +37 -0
 - data/lib/splash/cli/daemon.rb +52 -0
 - data/lib/splash/cli/documentation.rb +24 -0
 - data/lib/splash/cli/logs.rb +72 -0
 - data/lib/splash/commands.rb +10 -15
 - data/lib/splash/config.rb +7 -9
 - data/lib/splash/constants.rb +2 -1
 - data/lib/splash/controller.rb +12 -24
 - data/lib/splash/dependencies.rb +51 -0
 - data/lib/splash/exiter.rb +52 -0
 - data/lib/splash/helpers.rb +2 -8
 - data/lib/splash/logs.rb +4 -5
 - data/lib/splash/orchestrator.rb +4 -5
 - data/lib/splash/templates.rb +1 -0
 - data/lib/splash/transports.rb +1 -0
 - data/lib/splash/transports/rabbitmq.rb +1 -4
 - data/prometheus-splash.gemspec +3 -1
 - metadata +38 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 62507dbefc8ccad97a7388a4527a79991b7224e5d6181d8edc06fcd6299c6791
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 62fa6ab6b86cd2442a9f3d6e2a4bf3e073f3a2d0a51154dba4fa64590c4b5f54
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f651a3c3a6c758ce7939403d16c48d4b8f3666e30ad378c9de2db38a3e5ff7bfaf5565a0ffedf971781305a3098b15e9d5111efa1b4be6db16db8642b43ddbfc
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: fe6b45de95e4ecde64eb7361d4edc6da5268bfebabd312617b44983612155f02a7bc20c6297adf85797abe069350f81bf9cc46ec43ebb3fc493fcdd115306280
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -647,8 +647,38 @@ TRANSPORTS_STRUCT = { :list => [:rabbitmq], 
     | 
|
| 
       647 
647 
     | 
    
         | 
| 
       648 
648 
     | 
    
         | 
| 
       649 
649 
     | 
    
         
             
            #### Splash CLI return code significations
         
     | 
| 
      
 650 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 651 
     | 
    
         
            +
            EXIT_MAP= {
         
     | 
| 
       650 
652 
     | 
    
         | 
| 
       651 
     | 
    
         
            -
             
     | 
| 
      
 653 
     | 
    
         
            +
               # context execution
         
     | 
| 
      
 654 
     | 
    
         
            +
               :not_root => {:message => "This operation need to be run as root (use sudo or rvmsudo)", :code => 10},
         
     | 
| 
      
 655 
     | 
    
         
            +
               :options_incompatibility => {:message => "Options incompatibility", :code => 40},
         
     | 
| 
      
 656 
     | 
    
         
            +
               :service_dependence_missing => {:message => "Splash Service dependence missing", :code => 60},
         
     | 
| 
      
 657 
     | 
    
         
            +
             
     | 
| 
      
 658 
     | 
    
         
            +
               # config
         
     | 
| 
      
 659 
     | 
    
         
            +
               :specific_config_required => {:message => "Specific configuration required", :code => 30},
         
     | 
| 
      
 660 
     | 
    
         
            +
               :splash_setup_error => {:message => "Splash Setup terminated unsuccessfully", :code => 25},
         
     | 
| 
      
 661 
     | 
    
         
            +
               :splash_setup_success => {:message => "Splash Setup terminated successfully", :code => 0},
         
     | 
| 
      
 662 
     | 
    
         
            +
               :splash_sanitycheck_error => {:message => "Splash Sanitycheck terminated unsuccessfully", :code => 20},
         
     | 
| 
      
 663 
     | 
    
         
            +
               :splash_sanitycheck_success => {:message => "Splash Sanitycheck terminated successfully", :code => 0},
         
     | 
| 
      
 664 
     | 
    
         
            +
               :configuration_error => {:message => "Splash Configuration Error", :code => 50},
         
     | 
| 
      
 665 
     | 
    
         
            +
             
     | 
| 
      
 666 
     | 
    
         
            +
             
     | 
| 
      
 667 
     | 
    
         
            +
               # global
         
     | 
| 
      
 668 
     | 
    
         
            +
               :quiet_exit => {:code => 0},
         
     | 
| 
      
 669 
     | 
    
         
            +
             
     | 
| 
      
 670 
     | 
    
         
            +
               # events
         
     | 
| 
      
 671 
     | 
    
         
            +
               :interrupt => {:message => "Splash user operation interrupted", :code => 33},
         
     | 
| 
      
 672 
     | 
    
         
            +
             
     | 
| 
      
 673 
     | 
    
         
            +
               # request
         
     | 
| 
      
 674 
     | 
    
         
            +
               :not_found => {:message => "Object not found", :code => 44},
         
     | 
| 
      
 675 
     | 
    
         
            +
               :already_exist => {:message => "Object already exist", :code => 48},
         
     | 
| 
      
 676 
     | 
    
         
            +
             
     | 
| 
      
 677 
     | 
    
         
            +
               # daemon
         
     | 
| 
      
 678 
     | 
    
         
            +
               :status_ok => {:message => "Status OK", :code => 0},
         
     | 
| 
      
 679 
     | 
    
         
            +
               :status_ko => {:message => "Status KO", :code => 31}
         
     | 
| 
      
 680 
     | 
    
         
            +
            ```
         
     | 
| 
      
 681 
     | 
    
         
            +
            }
         
     | 
| 
       652 
682 
     | 
    
         | 
| 
       653 
683 
     | 
    
         
             
            ### In the Futur ?
         
     | 
| 
       654 
684 
     | 
    
         | 
    
        data/bin/splash
    CHANGED
    
    | 
         @@ -1,374 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby -W:no-deprecated
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'yaml'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'thread'
         
     | 
| 
      
 2 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
       5 
3 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              require 'prometheus/client/push'
         
     | 
| 
       9 
     | 
    
         
            -
              require 'thor'
         
     | 
| 
       10 
     | 
    
         
            -
              require 'rufus-scheduler'
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            rescue Gem::GemNotFoundException
         
     | 
| 
       13 
     | 
    
         
            -
              $stderr.puts "Loadind error, it's like you try to run Splash, with a lake of dependencies."
         
     | 
| 
       14 
     | 
    
         
            -
              $stderr.puts "If you run on RVM, please run with rvmsudo and not with sudo."
         
     | 
| 
       15 
     | 
    
         
            -
              $stderr.puts "If problem is percistant, please, proceed to new install and Setup."
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            require 'yaml'
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            require 'splash/constants'
         
     | 
| 
       21 
     | 
    
         
            -
            require 'splash/helpers'
         
     | 
| 
       22 
     | 
    
         
            -
            require 'splash/config'
         
     | 
| 
       23 
     | 
    
         
            -
            require 'splash/templates'
         
     | 
| 
       24 
     | 
    
         
            -
            require 'splash/backends'
         
     | 
| 
       25 
     | 
    
         
            -
            require 'splash/transports'
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
            require 'splash/commands'
         
     | 
| 
       28 
     | 
    
         
            -
            require 'splash/logs'
         
     | 
| 
       29 
     | 
    
         
            -
            require 'splash/orchestrator'
         
     | 
| 
       30 
     | 
    
         
            -
            require 'splash/controller'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'splash/dependencies'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'splash/cli'
         
     | 
| 
       31 
6 
     | 
    
         | 
| 
       32 
7 
     | 
    
         
             
            #inhibit warning : due to prometheus-client call to URI.encode warning
         
     | 
| 
       33 
8 
     | 
    
         
             
            $-w = nil
         
     | 
| 
       34 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
            include Splash::Dependencies
         
     | 
| 
       35 
11 
     | 
    
         
             
            include Splash::Helpers
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
            module CLISplash
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
              class Commands < Thor
         
     | 
| 
       41 
     | 
    
         
            -
                include Splash::Config
         
     | 
| 
       42 
     | 
    
         
            -
                include Splash::Backends
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                desc "execute NAME", "run for command/sequence or ack result"
         
     | 
| 
       45 
     | 
    
         
            -
                long_desc <<-LONGDESC
         
     | 
| 
       46 
     | 
    
         
            -
                execute command or sequence or ack result
         
     | 
| 
       47 
     | 
    
         
            -
                with --no-trace prevent storing execution trace in configured backend (see config file)
         
     | 
| 
       48 
     | 
    
         
            -
                with --ack, notify errorcode=0 to Prometheus PushGateway
         
     | 
| 
       49 
     | 
    
         
            -
                with --no-notify, bypass Prometheus notification
         
     | 
| 
       50 
     | 
    
         
            -
                with --no-callback, never execute callback (:on_failure, :on_success)
         
     | 
| 
       51 
     | 
    
         
            -
                                    never follow sequences
         
     | 
| 
       52 
     | 
    
         
            -
                LONGDESC
         
     | 
| 
       53 
     | 
    
         
            -
                option :trace, :type => :boolean, :default => true
         
     | 
| 
       54 
     | 
    
         
            -
                option :ack, :type => :boolean, negate: false
         
     | 
| 
       55 
     | 
    
         
            -
                option :notify, :type => :boolean, :default => true
         
     | 
| 
       56 
     | 
    
         
            -
                option :callback, :type => :boolean, :default => true
         
     | 
| 
       57 
     | 
    
         
            -
                def execute(name)
         
     | 
| 
       58 
     | 
    
         
            -
                  if is_root? then
         
     | 
| 
       59 
     | 
    
         
            -
                    command =  Splash::CommandWrapper::new(name)
         
     | 
| 
       60 
     | 
    
         
            -
                    command.ack if options[:ack]
         
     | 
| 
       61 
     | 
    
         
            -
                    command.call_and_notify trace: options[:trace], notify: options[:notify], callback: options[:callback]
         
     | 
| 
       62 
     | 
    
         
            -
                  else
         
     | 
| 
       63 
     | 
    
         
            -
                    $stderr.puts "Command wrapping need to be run as root"
         
     | 
| 
       64 
     | 
    
         
            -
                    exit 60
         
     | 
| 
       65 
     | 
    
         
            -
                  end
         
     | 
| 
       66 
     | 
    
         
            -
                end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                desc "treeview", "Show commands sequence tree"
         
     | 
| 
       71 
     | 
    
         
            -
                def treeview(command, depht = 0)
         
     | 
| 
       72 
     | 
    
         
            -
                  puts "Command : #{command.to_s}" if depht == 0
         
     | 
| 
       73 
     | 
    
         
            -
                  cmd  = get_config.commands[command.to_sym]
         
     | 
| 
       74 
     | 
    
         
            -
                  if cmd[:on_failure] then
         
     | 
| 
       75 
     | 
    
         
            -
                    print " " * depht + " "
         
     | 
| 
       76 
     | 
    
         
            -
                    puts "* on failure => #{cmd[:on_failure]}"
         
     | 
| 
       77 
     | 
    
         
            -
                    treeview(cmd[:on_failure], depht+2)
         
     | 
| 
       78 
     | 
    
         
            -
                  end
         
     | 
| 
       79 
     | 
    
         
            -
                  if cmd[:on_success] then
         
     | 
| 
       80 
     | 
    
         
            -
                    print " " * depht + " "
         
     | 
| 
       81 
     | 
    
         
            -
                    puts "* on success => #{cmd[:on_success]}"
         
     | 
| 
       82 
     | 
    
         
            -
                    treeview(cmd[:on_success],depht+2)
         
     | 
| 
       83 
     | 
    
         
            -
                  end
         
     | 
| 
       84 
     | 
    
         
            -
                end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                desc "list", "Show configured commands"
         
     | 
| 
       95 
     | 
    
         
            -
                long_desc <<-LONGDESC
         
     | 
| 
       96 
     | 
    
         
            -
                Show configured commands
         
     | 
| 
       97 
     | 
    
         
            -
                with --detail, show command details
         
     | 
| 
       98 
     | 
    
         
            -
                LONGDESC
         
     | 
| 
       99 
     | 
    
         
            -
                option :detail, :type => :boolean
         
     | 
| 
       100 
     | 
    
         
            -
                def list
         
     | 
| 
       101 
     | 
    
         
            -
                  puts "Splash configured commands :"
         
     | 
| 
       102 
     | 
    
         
            -
                  list = get_config.commands
         
     | 
| 
       103 
     | 
    
         
            -
                  puts 'No configured commands found' if list.keys.empty?
         
     | 
| 
       104 
     | 
    
         
            -
                  list.keys.each do |command|
         
     | 
| 
       105 
     | 
    
         
            -
                    puts " * #{command.to_s}"
         
     | 
| 
       106 
     | 
    
         
            -
                    if options[:detail] then
         
     | 
| 
       107 
     | 
    
         
            -
                      puts "   - command line : '#{list[command][:command]}'"
         
     | 
| 
       108 
     | 
    
         
            -
                      puts "   - command description : '#{list[command][:desc]}'"
         
     | 
| 
       109 
     | 
    
         
            -
                      puts "   - command failure callback : '#{list[command.to_sym][:on_failure]}'" if list[command.to_sym][:on_failure]
         
     | 
| 
       110 
     | 
    
         
            -
                      puts "   - command success callback : '#{list[command.to_sym][:on_success]}'" if list[command.to_sym][:on_success]
         
     | 
| 
       111 
     | 
    
         
            -
                    end
         
     | 
| 
       112 
     | 
    
         
            -
                  end
         
     | 
| 
       113 
     | 
    
         
            -
                end
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
                desc "show COMMAND", "Show specific configured command COMMAND"
         
     | 
| 
       117 
     | 
    
         
            -
                def show(command)
         
     | 
| 
       118 
     | 
    
         
            -
                  list = get_config.commands
         
     | 
| 
       119 
     | 
    
         
            -
                  if list.keys.include? command.to_sym then
         
     | 
| 
       120 
     | 
    
         
            -
                    puts "Splash command : #{command}"
         
     | 
| 
       121 
     | 
    
         
            -
                    puts "   - command line : '#{list[command.to_sym][:command]}'"
         
     | 
| 
       122 
     | 
    
         
            -
                    puts "   - command description : '#{list[command.to_sym][:desc]}'"
         
     | 
| 
       123 
     | 
    
         
            -
                    puts "   - command failure callback : '#{list[command.to_sym][:on_failure]}'" if list[command.to_sym][:on_failure]
         
     | 
| 
       124 
     | 
    
         
            -
                    puts "   - command success callback : '#{list[command.to_sym][:on_success]}'" if list[command.to_sym][:on_success]
         
     | 
| 
       125 
     | 
    
         
            -
                  else
         
     | 
| 
       126 
     | 
    
         
            -
                    $stderr.puts "Command not configured"
         
     | 
| 
       127 
     | 
    
         
            -
                    exit 50
         
     | 
| 
       128 
     | 
    
         
            -
                  end
         
     | 
| 
       129 
     | 
    
         
            -
                end
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
                desc "lastrun COMMAND", "Show last running result for specific configured command COMMAND"
         
     | 
| 
       133 
     | 
    
         
            -
                long_desc <<-LONGDESC
         
     | 
| 
       134 
     | 
    
         
            -
                Show last running result for specific configured command COMMAND
         
     | 
| 
       135 
     | 
    
         
            -
                with --hostname <HOSTNAME>, an other Splash monitored server (only with Redis backend configured)
         
     | 
| 
       136 
     | 
    
         
            -
                LONGDESC
         
     | 
| 
       137 
     | 
    
         
            -
                option :hostname, :type => :string
         
     | 
| 
       138 
     | 
    
         
            -
                def lastrun(command)
         
     | 
| 
       139 
     | 
    
         
            -
                  backend = get_backend :execution_trace
         
     | 
| 
       140 
     | 
    
         
            -
                  redis = (backend.class == Splash::Backends::Redis)? true : false
         
     | 
| 
       141 
     | 
    
         
            -
                  if not redis and options[:hostname] then
         
     | 
| 
       142 
     | 
    
         
            -
                    $stderr.puts "Remote execution report request only possible with Redis backend"
         
     | 
| 
       143 
     | 
    
         
            -
                  end
         
     | 
| 
       144 
     | 
    
         
            -
                  list = get_config.commands
         
     | 
| 
       145 
     | 
    
         
            -
                  if list.keys.include? command.to_sym then
         
     | 
| 
       146 
     | 
    
         
            -
                    print "Splash command #{command} previous execution report:\n\n"
         
     | 
| 
       147 
     | 
    
         
            -
                    req  = { :key => command}
         
     | 
| 
       148 
     | 
    
         
            -
                    req[:hostname] = options[:hostname] if options[:hostname]
         
     | 
| 
       149 
     | 
    
         
            -
                    if backend.exist? req then
         
     | 
| 
       150 
     | 
    
         
            -
                      print backend.get req
         
     | 
| 
       151 
     | 
    
         
            -
                    else
         
     | 
| 
       152 
     | 
    
         
            -
                      puts "Command not already runned."
         
     | 
| 
       153 
     | 
    
         
            -
                    end
         
     | 
| 
       154 
     | 
    
         
            -
                  else
         
     | 
| 
       155 
     | 
    
         
            -
                    $stderr.puts "Command not configured"
         
     | 
| 
       156 
     | 
    
         
            -
                    exit 50
         
     | 
| 
       157 
     | 
    
         
            -
                  end
         
     | 
| 
       158 
     | 
    
         
            -
                end
         
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
                desc "getreportlist COMMAND", "list all executions report results "
         
     | 
| 
       161 
     | 
    
         
            -
                long_desc <<-LONGDESC
         
     | 
| 
       162 
     | 
    
         
            -
                Show configured commands
         
     | 
| 
       163 
     | 
    
         
            -
                with --pattern <SEARCH>, search type string, wilcard * (group) ? (char)
         
     | 
| 
       164 
     | 
    
         
            -
                with --hostname <HOSTNAME>, an other Splash monitored server (only with Redis backend configured)
         
     | 
| 
       165 
     | 
    
         
            -
                with --all, get all execution report for all servers (only with Redis backend configured)
         
     | 
| 
       166 
     | 
    
         
            -
                --all and --hostname are exclusives
         
     | 
| 
       167 
     | 
    
         
            -
                LONGDESC
         
     | 
| 
       168 
     | 
    
         
            -
                option :pattern, :type => :string
         
     | 
| 
       169 
     | 
    
         
            -
                option :hostname, :type => :string
         
     | 
| 
       170 
     | 
    
         
            -
                option :all, :type => :boolean, :negate => false
         
     | 
| 
       171 
     | 
    
         
            -
                def getreportlist
         
     | 
| 
       172 
     | 
    
         
            -
                  if options[:hostname] and options[:all] then
         
     | 
| 
       173 
     | 
    
         
            -
                    $stderr.puts "--all option imcompatible with --hostname"
         
     | 
| 
       174 
     | 
    
         
            -
                    exit 40
         
     | 
| 
       175 
     | 
    
         
            -
                  end
         
     | 
| 
       176 
     | 
    
         
            -
                  backend = get_backend :execution_trace
         
     | 
| 
       177 
     | 
    
         
            -
                  redis = (backend.class == Splash::Backends::Redis)? true : false
         
     | 
| 
       178 
     | 
    
         
            -
                  if not redis and (options[:hostname] or options[:all]) then
         
     | 
| 
       179 
     | 
    
         
            -
                    $stderr.puts "Remote execution report request only possible with Redis backend"
         
     | 
| 
       180 
     | 
    
         
            -
                    exit 40
         
     | 
| 
       181 
     | 
    
         
            -
                  end
         
     | 
| 
       182 
     | 
    
         
            -
                  pattern = (options[:pattern])? options[:pattern] : '*'
         
     | 
| 
       183 
     | 
    
         
            -
                  if options[:all] then
         
     | 
| 
       184 
     | 
    
         
            -
                    res = backend.listall pattern
         
     | 
| 
       185 
     | 
    
         
            -
                  elsif options[:hostname]
         
     | 
| 
       186 
     | 
    
         
            -
                    res = backend.list pattern, options[:hostname]
         
     | 
| 
       187 
     | 
    
         
            -
                  else
         
     | 
| 
       188 
     | 
    
         
            -
                    res = backend.list pattern
         
     | 
| 
       189 
     | 
    
         
            -
                  end
         
     | 
| 
       190 
     | 
    
         
            -
                  print "List of Executions reports :\n\n"
         
     | 
| 
       191 
     | 
    
         
            -
                  puts "Not reports found" if res.empty?
         
     | 
| 
       192 
     | 
    
         
            -
                  res.each do |item|
         
     | 
| 
       193 
     | 
    
         
            -
                    if options[:all]
         
     | 
| 
       194 
     | 
    
         
            -
                      host,command = item.split('#')
         
     | 
| 
       195 
     | 
    
         
            -
                      puts " * Command : #{command} @ host : #{host}"
         
     | 
| 
       196 
     | 
    
         
            -
                    else
         
     | 
| 
       197 
     | 
    
         
            -
                      puts " * Command : #{item}"
         
     | 
| 
       198 
     | 
    
         
            -
                    end
         
     | 
| 
       199 
     | 
    
         
            -
                  end
         
     | 
| 
       200 
     | 
    
         
            -
                end
         
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
       202 
     | 
    
         
            -
             
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
              end
         
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
     | 
    
         
            -
             
     | 
| 
       208 
     | 
    
         
            -
             
     | 
| 
       209 
     | 
    
         
            -
              class CLIController < Thor
         
     | 
| 
       210 
     | 
    
         
            -
                include Splash::LogsMonitor::DaemonController
         
     | 
| 
       211 
     | 
    
         
            -
                include Splash::Transports
         
     | 
| 
       212 
     | 
    
         
            -
             
     | 
| 
       213 
     | 
    
         
            -
                option :foreground, :type => :boolean
         
     | 
| 
       214 
     | 
    
         
            -
                desc "start", "Starting Logs Monitor Daemon"
         
     | 
| 
       215 
     | 
    
         
            -
                def start
         
     | 
| 
       216 
     | 
    
         
            -
                  errorcode = run_as_root :startdaemon
         
     | 
| 
       217 
     | 
    
         
            -
                  exit errorcode
         
     | 
| 
       218 
     | 
    
         
            -
                end
         
     | 
| 
       219 
     | 
    
         
            -
             
     | 
| 
       220 
     | 
    
         
            -
                desc "stop", "Stopping Logs Monitor Daemon"
         
     | 
| 
       221 
     | 
    
         
            -
                def stop
         
     | 
| 
       222 
     | 
    
         
            -
                  errorcode = run_as_root :stopdaemon
         
     | 
| 
       223 
     | 
    
         
            -
                  exit errorcode
         
     | 
| 
       224 
     | 
    
         
            -
                end
         
     | 
| 
       225 
     | 
    
         
            -
             
     | 
| 
       226 
     | 
    
         
            -
                desc "status", "Logs Monitor Daemon status"
         
     | 
| 
       227 
     | 
    
         
            -
                def status
         
     | 
| 
       228 
     | 
    
         
            -
                  errorcode = run_as_root :statusdaemon
         
     | 
| 
       229 
     | 
    
         
            -
                  exit errorcode
         
     | 
| 
       230 
     | 
    
         
            -
                end
         
     | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
       232 
     | 
    
         
            -
                desc "ping HOSTNAME", "send a ping to HOSTNAME daemon over transport (need an active tranport), Typicallly RabbitMQ"
         
     | 
| 
       233 
     | 
    
         
            -
                def ping(hostname=Socket.gethostname)
         
     | 
| 
       234 
     | 
    
         
            -
                  puts "ctrl+c for interrupt"
         
     | 
| 
       235 
     | 
    
         
            -
                  queue = "splash.#{Socket.gethostname}.returncli"
         
     | 
| 
       236 
     | 
    
         
            -
                  order = {:verb => :ping, :payload => {:hostname => Socket.gethostname}, :return_to => queue}
         
     | 
| 
       237 
     | 
    
         
            -
             
     | 
| 
       238 
     | 
    
         
            -
                  lock = Mutex.new
         
     | 
| 
       239 
     | 
    
         
            -
                  condition = ConditionVariable.new
         
     | 
| 
       240 
     | 
    
         
            -
                  begin
         
     | 
| 
       241 
     | 
    
         
            -
                    get_default_subscriber(queue: queue).subscribe(timeout: 10) do |delivery_info, properties, payload|
         
     | 
| 
       242 
     | 
    
         
            -
                      puts YAML::load(payload)
         
     | 
| 
       243 
     | 
    
         
            -
                      lock.synchronize { condition.signal }
         
     | 
| 
       244 
     | 
    
         
            -
                    end
         
     | 
| 
       245 
     | 
    
         
            -
                    get_default_client.publish queue: "splash.#{hostname}.input", message: order.to_yaml
         
     | 
| 
       246 
     | 
    
         
            -
                    lock.synchronize { condition.wait(lock) }
         
     | 
| 
       247 
     | 
    
         
            -
                  rescue Interrupt
         
     | 
| 
       248 
     | 
    
         
            -
                    puts "Splash : ping : Interrupted by user. "
         
     | 
| 
       249 
     | 
    
         
            -
                    exit 33
         
     | 
| 
       250 
     | 
    
         
            -
                  end
         
     | 
| 
       251 
     | 
    
         
            -
                end
         
     | 
| 
       252 
     | 
    
         
            -
             
     | 
| 
       253 
     | 
    
         
            -
              end
         
     | 
| 
       254 
     | 
    
         
            -
             
     | 
| 
       255 
     | 
    
         
            -
             
     | 
| 
       256 
     | 
    
         
            -
             
     | 
| 
       257 
     | 
    
         
            -
             
     | 
| 
       258 
     | 
    
         
            -
              class Config < Thor
         
     | 
| 
       259 
     | 
    
         
            -
                include Splash::Config
         
     | 
| 
       260 
     | 
    
         
            -
                include Splash::Helpers
         
     | 
| 
       261 
     | 
    
         
            -
             
     | 
| 
       262 
     | 
    
         
            -
                desc "setup", "Setup installation fo Splash"
         
     | 
| 
       263 
     | 
    
         
            -
                long_desc <<-LONGDESC
         
     | 
| 
       264 
     | 
    
         
            -
                Setup installation fo Splash
         
     | 
| 
       265 
     | 
    
         
            -
                with --preserve, preserve from reinstallation of the config
         
     | 
| 
       266 
     | 
    
         
            -
                LONGDESC
         
     | 
| 
       267 
     | 
    
         
            -
                option :preserve, :type => :boolean
         
     | 
| 
       268 
     | 
    
         
            -
                def setup
         
     | 
| 
       269 
     | 
    
         
            -
                  errorcode = run_as_root :setupsplash
         
     | 
| 
       270 
     | 
    
         
            -
                  exit errorcode
         
     | 
| 
       271 
     | 
    
         
            -
                end
         
     | 
| 
       272 
     | 
    
         
            -
             
     | 
| 
       273 
     | 
    
         
            -
                desc "sanitycheck", "Verify installation fo Splash"
         
     | 
| 
       274 
     | 
    
         
            -
                def sanitycheck
         
     | 
| 
       275 
     | 
    
         
            -
                  errorcode = run_as_root :checkconfig
         
     | 
| 
       276 
     | 
    
         
            -
                  exit errorcode
         
     | 
| 
       277 
     | 
    
         
            -
                end
         
     | 
| 
       278 
     | 
    
         
            -
             
     | 
| 
       279 
     | 
    
         
            -
                desc "version", "display current Splash version"
         
     | 
| 
       280 
     | 
    
         
            -
                def version
         
     | 
| 
       281 
     | 
    
         
            -
                  config = get_config
         
     | 
| 
       282 
     | 
    
         
            -
                  puts "Splash version : #{config.version}, Author : #{config.author}"
         
     | 
| 
       283 
     | 
    
         
            -
                  puts config.copyright
         
     | 
| 
       284 
     | 
    
         
            -
                end
         
     | 
| 
       285 
     | 
    
         
            -
             
     | 
| 
       286 
     | 
    
         
            -
             
     | 
| 
       287 
     | 
    
         
            -
              end
         
     | 
| 
       288 
     | 
    
         
            -
             
     | 
| 
       289 
     | 
    
         
            -
             
     | 
| 
       290 
     | 
    
         
            -
              class Logs < Thor
         
     | 
| 
       291 
     | 
    
         
            -
                include Splash::Config
         
     | 
| 
       292 
     | 
    
         
            -
             
     | 
| 
       293 
     | 
    
         
            -
                desc "analyse", "analyze logs in config"
         
     | 
| 
       294 
     | 
    
         
            -
                def analyse
         
     | 
| 
       295 
     | 
    
         
            -
                  results = Splash::LogScanner::new
         
     | 
| 
       296 
     | 
    
         
            -
                  results.analyse
         
     | 
| 
       297 
     | 
    
         
            -
                  puts "SPlash Configured logs status :"
         
     | 
| 
       298 
     | 
    
         
            -
                  full_status = true
         
     | 
| 
       299 
     | 
    
         
            -
                  results.output.each do |result|
         
     | 
| 
       300 
     | 
    
         
            -
                    status = (result[:status] == :clean)? "OK": "KO"
         
     | 
| 
       301 
     | 
    
         
            -
                    puts " * Log : #{result[:log]} : [#{status}]"
         
     | 
| 
       302 
     | 
    
         
            -
                    puts "   - Detected pattern : #{result[:pattern]}"
         
     | 
| 
       303 
     | 
    
         
            -
                    puts "   - detailled Status : #{result[:status].to_s}"
         
     | 
| 
       304 
     | 
    
         
            -
                    puts "     count = #{result[:count]}" if result[:status] == :matched
         
     | 
| 
       305 
     | 
    
         
            -
                    puts "     nb lines = #{result[:lines]}" if result[:status] != :missing
         
     | 
| 
       306 
     | 
    
         
            -
                    full_status = false unless result[:status] == :clean
         
     | 
| 
       307 
     | 
    
         
            -
                  end
         
     | 
| 
       308 
     | 
    
         
            -
                  display_status = (full_status)? "OK": "KO"
         
     | 
| 
       309 
     | 
    
         
            -
                  puts "Global Status : [#{display_status}]"
         
     | 
| 
       310 
     | 
    
         
            -
                end
         
     | 
| 
       311 
     | 
    
         
            -
             
     | 
| 
       312 
     | 
    
         
            -
                desc "monitor", "monitor logs in config"
         
     | 
| 
       313 
     | 
    
         
            -
                def monitor
         
     | 
| 
       314 
     | 
    
         
            -
                  result = Splash::LogScanner::new
         
     | 
| 
       315 
     | 
    
         
            -
                  result.analyse
         
     | 
| 
       316 
     | 
    
         
            -
                  result.notify
         
     | 
| 
       317 
     | 
    
         
            -
                end
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
                desc "show LOG", "show configured log monitoring for LOG"
         
     | 
| 
       320 
     | 
    
         
            -
                def show(log)
         
     | 
| 
       321 
     | 
    
         
            -
                  log_record_set = get_config.logs.select{|item| item[:log] == log }
         
     | 
| 
       322 
     | 
    
         
            -
                  unless log_record_set.empty? then
         
     | 
| 
       323 
     | 
    
         
            -
                    record = log_record_set.first
         
     | 
| 
       324 
     | 
    
         
            -
                    puts "Splash log monitor : #{record[:log]}"
         
     | 
| 
       325 
     | 
    
         
            -
                    puts "  ->   pattern : /#{record[:pattern]}/"
         
     | 
| 
       326 
     | 
    
         
            -
                else
         
     | 
| 
       327 
     | 
    
         
            -
                    $stderr.puts "log not configured"
         
     | 
| 
       328 
     | 
    
         
            -
                    exit 50
         
     | 
| 
       329 
     | 
    
         
            -
                  end
         
     | 
| 
       330 
     | 
    
         
            -
                end
         
     | 
| 
       331 
     | 
    
         
            -
             
     | 
| 
       332 
     | 
    
         
            -
                desc "list", "Show configured logs monitoring"
         
     | 
| 
       333 
     | 
    
         
            -
                long_desc <<-LONGDESC
         
     | 
| 
       334 
     | 
    
         
            -
                Show configured logs monitoring
         
     | 
| 
       335 
     | 
    
         
            -
                with --detail, show logs monitor details
         
     | 
| 
       336 
     | 
    
         
            -
                LONGDESC
         
     | 
| 
       337 
     | 
    
         
            -
                option :detail, :type => :boolean
         
     | 
| 
       338 
     | 
    
         
            -
                def list
         
     | 
| 
       339 
     | 
    
         
            -
                  puts "Splash configured log monitoring :"
         
     | 
| 
       340 
     | 
    
         
            -
                  log_record_set = get_config.logs
         
     | 
| 
       341 
     | 
    
         
            -
                  puts 'No configured commands found' if log_record_set.empty?
         
     | 
| 
       342 
     | 
    
         
            -
                  log_record_set.each do |record|
         
     | 
| 
       343 
     | 
    
         
            -
                    puts " *  log monitor : #{record[:log]}"
         
     | 
| 
       344 
     | 
    
         
            -
                    if options[:detail] then
         
     | 
| 
       345 
     | 
    
         
            -
                      puts "  ->   pattern : /#{record[:pattern]}/"
         
     | 
| 
       346 
     | 
    
         
            -
                    end
         
     | 
| 
       347 
     | 
    
         
            -
                  end
         
     | 
| 
       348 
     | 
    
         
            -
                end
         
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
              end
         
     | 
| 
       351 
     | 
    
         
            -
            end
         
     | 
| 
       352 
     | 
    
         
            -
             
     | 
| 
       353 
     | 
    
         
            -
            class CLI < Thor
         
     | 
| 
       354 
     | 
    
         
            -
              def self.exit_on_failure?
         
     | 
| 
       355 
     | 
    
         
            -
                true
         
     | 
| 
       356 
     | 
    
         
            -
              end
         
     | 
| 
       357 
     | 
    
         
            -
             
     | 
| 
       358 
     | 
    
         
            -
              include CLISplash
         
     | 
| 
       359 
     | 
    
         
            -
              desc "commands SUBCOMMAND ...ARGS", "Managing commands/batchs supervision"
         
     | 
| 
       360 
     | 
    
         
            -
              subcommand "commands", Commands
         
     | 
| 
       361 
     | 
    
         
            -
              desc "logs SUBCOMMAND ...ARGS", "Managing Files/Logs supervision"
         
     | 
| 
       362 
     | 
    
         
            -
              subcommand "logs", Logs
         
     | 
| 
       363 
     | 
    
         
            -
              desc "daemon SUBCOMMAND ...ARGS", "Logs monitor daemon contoller"
         
     | 
| 
       364 
     | 
    
         
            -
              subcommand "daemon", CLIController
         
     | 
| 
       365 
     | 
    
         
            -
              desc "config SUBCOMMAND ...ARGS", "config tools for Splash"
         
     | 
| 
       366 
     | 
    
         
            -
              subcommand "config", Config
         
     | 
| 
       367 
     | 
    
         
            -
            end
         
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
            include Splash::Exiter
         
     | 
| 
       371 
13 
     | 
    
         | 
| 
       372 
14 
     | 
    
         | 
| 
       373 
15 
     | 
    
         | 
| 
       374 
     | 
    
         
            -
            CLI.start(ARGV)
         
     | 
| 
      
 16 
     | 
    
         
            +
             CLI.start(ARGV)
         
     | 
    
        data/lib/splash/backends.rb
    CHANGED
    
    
    
        data/lib/splash/backends/file.rb
    CHANGED