prometheus-splash 0.3.0 → 0.4.0
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/.github/workflows/ruby.yml +25 -0
 - data/CHANGELOG +26 -0
 - data/README.md +37 -1
 - data/assets/images/splash_design.png +0 -0
 - data/bin/splash +9 -1
 - data/config/splash.yml +13 -3
 - data/lib/splash/backends/file.rb +16 -0
 - data/lib/splash/cli/commands.rb +117 -41
 - data/lib/splash/cli/config.rb +7 -5
 - data/lib/splash/cli/daemon.rb +8 -4
 - data/lib/splash/cli/logs.rb +32 -18
 - data/lib/splash/commands.rb +17 -16
 - data/lib/splash/config.rb +4 -0
 - data/lib/splash/config/sanitycheck.rb +23 -19
 - data/lib/splash/config/setup.rb +15 -11
 - data/lib/splash/constants.rb +9 -5
 - data/lib/splash/controller.rb +20 -10
 - data/lib/splash/dependencies.rb +3 -0
 - data/lib/splash/exiter.rb +4 -2
 - data/lib/splash/helpers.rb +30 -4
 - data/lib/splash/loggers.rb +89 -0
 - data/lib/splash/loggers/cli.rb +83 -0
 - data/lib/splash/loggers/daemon.rb +32 -0
 - data/lib/splash/loggers/dual.rb +22 -0
 - data/lib/splash/logs.rb +4 -3
 - data/lib/splash/orchestrator.rb +17 -8
 - data/lib/splash/orchestrator/grammar.rb +13 -6
 - data/lib/splash/transports.rb +2 -2
 - data/lib/splash/transports/rabbitmq.rb +16 -2
 - data/prometheus-splash.gemspec +2 -1
 - metadata +23 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 7d75be43cdbdc1c7e5cd951946d8ff25bf0da4225c65d2f1150b986179a2be6a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 6f10a62124372883c15723a1e28d9e439d105cf70b7e30162e7dd16cfd09e0a7
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: b55b81edb62e943d53393a9b2dbafecb94e82ff7aacd9feb35480b8184c82585d2267ae97e5d67f6797f2a9df8b67424f04912721d97dea3512a7edb597fad99
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: '059dc2af31e92868090913afe9ae8044b4d995e4df6ea6a0ca9492ba4a341aada92a684d79857c04a77ad7b675106fc9a21719933d7e4ef2b352c6505e7771a9'
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: Ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on:
         
     | 
| 
      
 4 
     | 
    
         
            +
              push:
         
     | 
| 
      
 5 
     | 
    
         
            +
                branches: [ master ]
         
     | 
| 
      
 6 
     | 
    
         
            +
              pull_request:
         
     | 
| 
      
 7 
     | 
    
         
            +
                branches: [ master ]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 10 
     | 
    
         
            +
              build:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 15 
     | 
    
         
            +
                - uses: actions/checkout@v2
         
     | 
| 
      
 16 
     | 
    
         
            +
                - name: Set up Ruby 2.6
         
     | 
| 
      
 17 
     | 
    
         
            +
                  uses: actions/setup-ruby@v1
         
     | 
| 
      
 18 
     | 
    
         
            +
                  with:
         
     | 
| 
      
 19 
     | 
    
         
            +
                    ruby-version: 2.6.x
         
     | 
| 
      
 20 
     | 
    
         
            +
                - name: Build and test with Rake
         
     | 
| 
      
 21 
     | 
    
         
            +
                  run: |
         
     | 
| 
      
 22 
     | 
    
         
            +
                    gem install bundler
         
     | 
| 
      
 23 
     | 
    
         
            +
                    bundle install --jobs 4 --retry 3
         
     | 
| 
      
 24 
     | 
    
         
            +
                    bundle exec rake spec
         
     | 
| 
      
 25 
     | 
    
         
            +
                    bundle exec rake build
         
     | 
    
        data/CHANGELOG
    ADDED
    
    | 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # SPLASH CHANGELOG
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            ## V 0.3.0 2020/04/11
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            * Begining of Changelog tracking
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ## V 0.4.0 2020/04/14
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ### DOC :
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            * adding \n for LONGDESC Thor #14
         
     | 
| 
      
 13 
     | 
    
         
            +
            * Doc for command name format in YAML #2
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            ### CHANGE :
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            * RabbitMQ Credentials and vhosts support #16
         
     | 
| 
      
 18 
     | 
    
         
            +
            * backend hardening #18
         
     | 
| 
      
 19 
     | 
    
         
            +
            * remote show with --hostname #12
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ### FEATURE :
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            * CLI colors and logger CLI /dual #8
         
     | 
| 
      
 25 
     | 
    
         
            +
            * Log for splash daemon #6
         
     | 
| 
      
 26 
     | 
    
         
            +
            * Schedule command via daemon execute and --hostname #11
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -4,9 +4,22 @@ 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            SPLASH is **Supervision with Prometheus of Logs and Asynchronous tasks orchestration for Services or Hosts**
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
            * Author : Romain GEORGES
         
     | 
| 
      
 8 
     | 
    
         
            +
            * COPYright : BSD-2-Clause (c) 2020 Ultragreen Software
         
     | 
| 
      
 9 
     | 
    
         
            +
            * Web : http://www.ultragreen.net
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Github : https://github.com/Ultragreen/prometheus-splash
         
     | 
| 
      
 11 
     | 
    
         
            +
            * Rubygems : https://rubygems.org/gems/prometheus-splash
         
     | 
| 
      
 12 
     | 
    
         
            +
            * DOC yardoc : https://www.rubydoc.info/gems/prometheus-splash/0.3.0
         
     | 
| 
       7 
13 
     | 
    
         | 
| 
       8 
14 
     | 
    
         
             
            Prometheus Logs and Batchs supervision over PushGateway
         
     | 
| 
       9 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
            [](https://badge.fury.io/gh/Ultragreen%2Fprometheus-splash)
         
     | 
| 
      
 17 
     | 
    
         
            +
            
         
     | 
| 
      
 18 
     | 
    
         
            +
            [](https://badge.fury.io/rb/prometheus-splash)
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ## Design
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            
         
     | 
| 
       10 
23 
     | 
    
         | 
| 
       11 
24 
     | 
    
         
             
            ## Preconfiguration
         
     | 
| 
       12 
25 
     | 
    
         | 
| 
         @@ -289,6 +302,13 @@ To see all the commands in the 'commands' submenu : 
     | 
|
| 
       289 
302 
     | 
    
         | 
| 
       290 
303 
     | 
    
         
             
            Commands or Commands Sequences must be defined in the main configuration file '/etc/splash.yml'
         
     | 
| 
       291 
304 
     | 
    
         | 
| 
      
 305 
     | 
    
         
            +
            Command name must be Ruby Symbols, so in the YAML file, it must look like :
         
     | 
| 
      
 306 
     | 
    
         
            +
             
     | 
| 
      
 307 
     | 
    
         
            +
                :xxxxxx:
         
     | 
| 
      
 308 
     | 
    
         
            +
             
     | 
| 
      
 309 
     | 
    
         
            +
            _with x in the following list [A-Za-z_0-9]_
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
             
     | 
| 
       292 
312 
     | 
    
         
             
            *Exemple* in default configuration :
         
     | 
| 
       293 
313 
     | 
    
         | 
| 
       294 
314 
     | 
    
         
             
                ### configuration of commands and scheduling
         
     | 
| 
         @@ -350,10 +370,21 @@ may include : 
     | 
|
| 
       350 
370 
     | 
    
         
             
            * :user: the userneme to use to run the command
         
     | 
| 
       351 
371 
     | 
    
         
             
            * :on_failure: the name of an other defined command, to, execute if exit_code > 0
         
     | 
| 
       352 
372 
     | 
    
         
             
            * :on_success: the name of an other defined command, to, execute if exit_code = 0
         
     | 
| 
       353 
     | 
    
         
            -
            * :schedule:  ( 
     | 
| 
      
 373 
     | 
    
         
            +
            * :schedule:  (Hash) a scheduling for daemon, after in this documentation, it support :
         
     | 
| 
       354 
374 
     | 
    
         
             
              * :every: "<timing>" ex: "1s", "3m", "2h"
         
     | 
| 
       355 
375 
     | 
    
         
             
              * :at: "<date/time>" ex: "2030/12/12 23:30:00"
         
     | 
| 
       356 
376 
     | 
    
         
             
              * :cron: * * * * * a cron format
         
     | 
| 
      
 377 
     | 
    
         
            +
            * delegate_to: (Hash) a Slash delagation
         
     | 
| 
      
 378 
     | 
    
         
            +
              * :host: the hostname of an other Confiugured Splash Node.
         
     | 
| 
      
 379 
     | 
    
         
            +
              * :remote_command: a command defined in the remote Splash node Configuration
         
     | 
| 
      
 380 
     | 
    
         
            +
             
     | 
| 
      
 381 
     | 
    
         
            +
            _Remarque_ : Command name, as precise earlier in this documentation is Ruby Symbols ':xxxxx'.
         
     | 
| 
      
 382 
     | 
    
         
            +
            In YAML as a Hash key : ':xxxxxx: ', but as a value _':xxxxx'_, so the synthaxe for callbacks :
         
     | 
| 
      
 383 
     | 
    
         
            +
             
     | 
| 
      
 384 
     | 
    
         
            +
                :on_success: :xxxxxx
         
     | 
| 
      
 385 
     | 
    
         
            +
                :on_failure: :xxxxxx
         
     | 
| 
      
 386 
     | 
    
         
            +
             
     | 
| 
      
 387 
     | 
    
         
            +
            It's the same for :remote_command
         
     | 
| 
       357 
388 
     | 
    
         | 
| 
       358 
389 
     | 
    
         
             
            [Rufus Scheduler Doc](https://github.com/jmettraux/rufus-scheduler)
         
     | 
| 
       359 
390 
     | 
    
         | 
| 
         @@ -704,3 +735,8 @@ EXIT_MAP= { 
     | 
|
| 
       704 
735 
     | 
    
         
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
       705 
736 
     | 
    
         
             
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
| 
       706 
737 
     | 
    
         
             
            5. Create new Pull Request
         
     | 
| 
      
 738 
     | 
    
         
            +
             
     | 
| 
      
 739 
     | 
    
         
            +
             
     | 
| 
      
 740 
     | 
    
         
            +
            ## Context
         
     | 
| 
      
 741 
     | 
    
         
            +
             
     | 
| 
      
 742 
     | 
    
         
            +
            *Massively made during COVID-19 containment : #StayAtHomeSoftware*
         
     | 
| 
         Binary file 
     | 
    
        data/bin/splash
    CHANGED
    
    | 
         @@ -10,7 +10,15 @@ $-w = nil 
     | 
|
| 
       10 
10 
     | 
    
         
             
            include Splash::Dependencies
         
     | 
| 
       11 
11 
     | 
    
         
             
            include Splash::Helpers
         
     | 
| 
       12 
12 
     | 
    
         
             
            include Splash::Exiter
         
     | 
| 
      
 13 
     | 
    
         
            +
            include Splash::Loggers
         
     | 
| 
      
 14 
     | 
    
         
            +
            include Splash::Config
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
            unless verify_file(name: CONFIG_FILE, mode: "644", owner: user_root, group: group_root).empty? then
         
     | 
| 
      
 17 
     | 
    
         
            +
              puts 'ERROR: Splash need reconfiguration : execution abort, '
         
     | 
| 
      
 18 
     | 
    
         
            +
              puts ' => Restart after rebuild (recheck for homemade templates) :'
         
     | 
| 
       14 
19 
     | 
    
         | 
| 
      
 20 
     | 
    
         
            +
              acase = run_as_root :setupsplash
         
     | 
| 
      
 21 
     | 
    
         
            +
              splash_exit acase
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
       15 
23 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
            CLI.start(ARGV)
         
     | 
    
        data/config/splash.yml
    CHANGED
    
    | 
         @@ -2,6 +2,13 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            :splash:
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            ### Main Configuration
         
     | 
| 
      
 5 
     | 
    
         
            +
              :loggers:
         
     | 
| 
      
 6 
     | 
    
         
            +
                :level: :info
         
     | 
| 
      
 7 
     | 
    
         
            +
                :daemon:
         
     | 
| 
      
 8 
     | 
    
         
            +
                  :file: /var/log/splash.log
         
     | 
| 
      
 9 
     | 
    
         
            +
                :cli:
         
     | 
| 
      
 10 
     | 
    
         
            +
                  :emoji: true
         
     | 
| 
      
 11 
     | 
    
         
            +
                  :color: true
         
     | 
| 
       5 
12 
     | 
    
         
             
              :templates:
         
     | 
| 
       6 
13 
     | 
    
         
             
                :execution:
         
     | 
| 
       7 
14 
     | 
    
         
             
                  :path: /etc/splash_execution_report.tpl
         
     | 
| 
         @@ -9,7 +16,7 @@ 
     | 
|
| 
       9 
16 
     | 
    
         
             
                :stores:
         
     | 
| 
       10 
17 
     | 
    
         
             
                  :execution_trace:
         
     | 
| 
       11 
18 
     | 
    
         
             
                      :type: :file
         
     | 
| 
       12 
     | 
    
         
            -
                      :path: / 
     | 
| 
      
 19 
     | 
    
         
            +
                      :path: /var/run/splash
         
     | 
| 
       13 
20 
     | 
    
         
             
            #      :execution_trace:
         
     | 
| 
       14 
21 
     | 
    
         
             
            #        :type: :redis
         
     | 
| 
       15 
22 
     | 
    
         
             
            #        :host: localhost
         
     | 
| 
         @@ -19,15 +26,17 @@ 
     | 
|
| 
       19 
26 
     | 
    
         
             
              :transports:
         
     | 
| 
       20 
27 
     | 
    
         
             
                :active: :rabbitmq
         
     | 
| 
       21 
28 
     | 
    
         
             
                :rabbitmq:
         
     | 
| 
       22 
     | 
    
         
            -
                  : 
     | 
| 
      
 29 
     | 
    
         
            +
                  :vhost: /
         
     | 
| 
       23 
30 
     | 
    
         
             
                  :port: 5672
         
     | 
| 
       24 
31 
     | 
    
         
             
                  :host: "localhost"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  # :passwd: testpasswd
         
     | 
| 
      
 33 
     | 
    
         
            +
                  # :user: test
         
     | 
| 
       25 
34 
     | 
    
         
             
              :daemon:
         
     | 
| 
       26 
35 
     | 
    
         
             
                :logmon_scheduling:
         
     | 
| 
       27 
36 
     | 
    
         
             
                  :every: 20s
         
     | 
| 
       28 
37 
     | 
    
         
             
                :process_name: "Splash : daemon."
         
     | 
| 
       29 
38 
     | 
    
         
             
                :paths:
         
     | 
| 
       30 
     | 
    
         
            -
                  :pid_path: / 
     | 
| 
      
 39 
     | 
    
         
            +
                  :pid_path: /var/run
         
     | 
| 
       31 
40 
     | 
    
         
             
                  :trace_path: /tmp/splash
         
     | 
| 
       32 
41 
     | 
    
         
             
                :files:
         
     | 
| 
       33 
42 
     | 
    
         
             
                  :stdout_trace: stdout.txt
         
     | 
| 
         @@ -88,6 +97,7 @@ 
     | 
|
| 
       88 
97 
     | 
    
         
             
                  :delegate_to:
         
     | 
| 
       89 
98 
     | 
    
         
             
                    :host: omicron
         
     | 
| 
       90 
99 
     | 
    
         
             
                    :remote_command: :echo2
         
     | 
| 
      
 100 
     | 
    
         
            +
                  :on_success: :echo3
         
     | 
| 
       91 
101 
     | 
    
         | 
| 
       92 
102 
     | 
    
         | 
| 
       93 
103 
     | 
    
         
             
            ### configuration of monitored logs
         
     | 
    
        data/lib/splash/backends/file.rb
    CHANGED
    
    | 
         @@ -3,9 +3,14 @@ module Splash 
     | 
|
| 
       3 
3 
     | 
    
         
             
              module Backends
         
     | 
| 
       4 
4 
     | 
    
         
             
                class File
         
     | 
| 
       5 
5 
     | 
    
         
             
                  include Splash::Config
         
     | 
| 
      
 6 
     | 
    
         
            +
                  include Splash::Exiter
         
     | 
| 
      
 7 
     | 
    
         
            +
                  include Splash::Helpers
         
     | 
| 
      
 8 
     | 
    
         
            +
                  include Splash::Loggers
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       6 
10 
     | 
    
         
             
                  def initialize(store)
         
     | 
| 
       7 
11 
     | 
    
         
             
                    @config = get_config[:backends][:stores][store]
         
     | 
| 
       8 
12 
     | 
    
         
             
                    @path = @config[:path]
         
     | 
| 
      
 13 
     | 
    
         
            +
                    ensure_backend
         
     | 
| 
       9 
14 
     | 
    
         
             
                  end
         
     | 
| 
       10 
15 
     | 
    
         | 
| 
       11 
16 
     | 
    
         
             
                  def list(pattern='*')
         
     | 
| 
         @@ -36,6 +41,17 @@ module Splash 
     | 
|
| 
       36 
41 
     | 
    
         
             
                    return "#{astring}.trace"
         
     | 
| 
       37 
42 
     | 
    
         
             
                  end
         
     | 
| 
       38 
43 
     | 
    
         | 
| 
      
 44 
     | 
    
         
            +
                  def ensure_backend
         
     | 
| 
      
 45 
     | 
    
         
            +
                    unless verify_folder(name: @config[:path], mode: "644", owner: get_config.user_root, group: get_config.group_root).empty? then
         
     | 
| 
      
 46 
     | 
    
         
            +
                      get_logger.warn "File Backend folder : #{@config[:path]} is missing"
         
     | 
| 
      
 47 
     | 
    
         
            +
                      if make_folder path: @config[:path], mode: "644", owner: get_config.user_root, group: get_config.group_root then
         
     | 
| 
      
 48 
     | 
    
         
            +
                        get_logger.ok "File Backend folder : #{@config[:path]} created"
         
     | 
| 
      
 49 
     | 
    
         
            +
                      else
         
     | 
| 
      
 50 
     | 
    
         
            +
                        splash_exit case: :configuration_error, more: "File backend creation error"
         
     | 
| 
      
 51 
     | 
    
         
            +
                      end
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
       39 
55 
     | 
    
         
             
                end
         
     | 
| 
       40 
56 
     | 
    
         
             
              end
         
     | 
| 
       41 
57 
     | 
    
         | 
    
        data/lib/splash/cli/commands.rb
    CHANGED
    
    | 
         @@ -8,6 +8,7 @@ module CLISplash 
     | 
|
| 
       8 
8 
     | 
    
         
             
                include Splash::Exiter
         
     | 
| 
       9 
9 
     | 
    
         
             
                include Splash::Transports
         
     | 
| 
       10 
10 
     | 
    
         
             
                include Splash::Templates
         
     | 
| 
      
 11 
     | 
    
         
            +
                include Splash::Loggers
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                desc "execute NAME", "run for command/sequence or ack result"
         
     | 
| 
       13 
14 
     | 
    
         
             
                long_desc <<-LONGDESC
         
     | 
| 
         @@ -16,7 +17,7 @@ module CLISplash 
     | 
|
| 
       16 
17 
     | 
    
         
             
                with --ack, notify errorcode=0 to Prometheus PushGateway\n
         
     | 
| 
       17 
18 
     | 
    
         
             
                with --no-notify, bypass Prometheus notification\n
         
     | 
| 
       18 
19 
     | 
    
         
             
                with --no-callback, never execute callback (:on_failure, :on_success)\n
         
     | 
| 
       19 
     | 
    
         
            -
                                    never follow sequences
         
     | 
| 
      
 20 
     | 
    
         
            +
                                    never follow sequences\n
         
     | 
| 
       20 
21 
     | 
    
         
             
                with --hostname, execute on an other Splash daemon node
         
     | 
| 
       21 
22 
     | 
    
         
             
                LONGDESC
         
     | 
| 
       22 
23 
     | 
    
         
             
                option :trace, :type => :boolean, :default => true
         
     | 
| 
         @@ -25,11 +26,12 @@ module CLISplash 
     | 
|
| 
       25 
26 
     | 
    
         
             
                option :callback, :type => :boolean, :default => true
         
     | 
| 
       26 
27 
     | 
    
         
             
                option :hostname, :type => :string
         
     | 
| 
       27 
28 
     | 
    
         
             
                def execute(name)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  log = get_logger
         
     | 
| 
       28 
30 
     | 
    
         
             
                  if is_root? then
         
     | 
| 
       29 
31 
     | 
    
         
             
                    if options[:hostname] then
         
     | 
| 
       30 
32 
     | 
    
         
             
                      splash_exit({ :case => :options_incompatibility, :more => '--hostname forbidden with delagate commands'}) if get_config.commands[name.to_sym][:delegate_to]
         
     | 
| 
       31 
     | 
    
         
            -
                       
     | 
| 
       32 
     | 
    
         
            -
                       
     | 
| 
      
 33 
     | 
    
         
            +
                      log.info "Remote Splash configured commands on #{options[:hostname]}:"
         
     | 
| 
      
 34 
     | 
    
         
            +
                      log.info "ctrl+c for interrupt"
         
     | 
| 
       33 
35 
     | 
    
         
             
                      begin
         
     | 
| 
       34 
36 
     | 
    
         
             
                        transport = get_default_client
         
     | 
| 
       35 
37 
     | 
    
         
             
                        if transport.class == Hash  and transport.include? :case then
         
     | 
| 
         @@ -68,18 +70,61 @@ module CLISplash 
     | 
|
| 
       68 
70 
     | 
    
         
             
                end
         
     | 
| 
       69 
71 
     | 
    
         | 
| 
       70 
72 
     | 
    
         | 
| 
      
 73 
     | 
    
         
            +
                desc "schedule NAME", "Schedule excution of command on Splash daemon"
         
     | 
| 
      
 74 
     | 
    
         
            +
                long_desc <<-LONGDESC
         
     | 
| 
      
 75 
     | 
    
         
            +
                Schedule excution of command on Splash daemon\n
         
     | 
| 
      
 76 
     | 
    
         
            +
                with --hostname, Schedule on an other Splash daemon via transport\n
         
     | 
| 
      
 77 
     | 
    
         
            +
                with --at TIME/DATE, Schedule at specified date/time, like 2030/12/12 23:30:00 or 12:00 \n
         
     | 
| 
      
 78 
     | 
    
         
            +
                with --in TIMING, Schedule in specified timing, like 12s, 1m, 2h, 3m10s, 10d\n
         
     | 
| 
      
 79 
     | 
    
         
            +
                --in and --at are imcompatibles.\n
         
     | 
| 
      
 80 
     | 
    
         
            +
                WARNING : scheduling by CLI are not percisted, so use it only for specifics cases.\n
         
     | 
| 
      
 81 
     | 
    
         
            +
                NOTES : Scheduling, force trace, notifying and callback.
         
     | 
| 
      
 82 
     | 
    
         
            +
                LONGDESC
         
     | 
| 
      
 83 
     | 
    
         
            +
                option :hostname, :type => :string
         
     | 
| 
      
 84 
     | 
    
         
            +
                option :at, :type => :string
         
     | 
| 
      
 85 
     | 
    
         
            +
                option :in, :type => :string
         
     | 
| 
      
 86 
     | 
    
         
            +
                def schedule(name)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  log = get_logger
         
     | 
| 
      
 88 
     | 
    
         
            +
                  hostname = (options[:hostname])? options[:hostname] : Socket.gethostname
         
     | 
| 
      
 89 
     | 
    
         
            +
                  splash_exit({ :case => :options_incompatibility, :more => '--at or --in is required'}) unless options[:at] or options[:in]
         
     | 
| 
      
 90 
     | 
    
         
            +
                  splash_exit({ :case => :options_incompatibility, :more => '--at an --in'}) if options[:at] and options[:in]
         
     | 
| 
      
 91 
     | 
    
         
            +
                  log.info "Remote Splash scheduling command on #{hostname}:"
         
     | 
| 
      
 92 
     | 
    
         
            +
                  log.info "ctrl+c for interrupt"
         
     | 
| 
      
 93 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 94 
     | 
    
         
            +
                    transport = get_default_client
         
     | 
| 
      
 95 
     | 
    
         
            +
                    if transport.class == Hash  and transport.include? :case then
         
     | 
| 
      
 96 
     | 
    
         
            +
                      splash_exit transport
         
     | 
| 
      
 97 
     | 
    
         
            +
                    else
         
     | 
| 
      
 98 
     | 
    
         
            +
                      schedule = { :in => options[:in]} if options[:in]
         
     | 
| 
      
 99 
     | 
    
         
            +
                      schedule = { :at => options[:at]} if options[:at]
         
     | 
| 
      
 100 
     | 
    
         
            +
                      res = transport.execute({ :verb => :execute_command,
         
     | 
| 
      
 101 
     | 
    
         
            +
                                              payload: {:name => name, :schedule => schedule},
         
     | 
| 
      
 102 
     | 
    
         
            +
                                              :return_to => "splash.#{Socket.gethostname}.returncli",
         
     | 
| 
      
 103 
     | 
    
         
            +
                                              :queue => "splash.#{hostname}.input" })
         
     | 
| 
      
 104 
     | 
    
         
            +
                      log.receive "Execute command sheduled confirmed"
         
     | 
| 
      
 105 
     | 
    
         
            +
                      res[:more] = "Remote command : :execute_command with schedule"
         
     | 
| 
      
 106 
     | 
    
         
            +
                      splash_exit res
         
     | 
| 
      
 107 
     | 
    
         
            +
                    end
         
     | 
| 
      
 108 
     | 
    
         
            +
                  rescue Interrupt
         
     | 
| 
      
 109 
     | 
    
         
            +
                    splash_exit case: :interrupt, more: "Remote command exection"
         
     | 
| 
      
 110 
     | 
    
         
            +
                  end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                end
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
       71 
115 
     | 
    
         
             
                desc "treeview", "Show commands sequence tree"
         
     | 
| 
       72 
116 
     | 
    
         
             
                def treeview(command, depht = 0)
         
     | 
| 
       73 
     | 
    
         
            -
                   
     | 
| 
      
 117 
     | 
    
         
            +
                  log  = get_logger
         
     | 
| 
      
 118 
     | 
    
         
            +
                  log.info "Command : #{command.to_s}" if depht == 0
         
     | 
| 
       74 
119 
     | 
    
         
             
                  cmd  = get_config.commands[command.to_sym]
         
     | 
| 
       75 
120 
     | 
    
         
             
                  if cmd[:on_failure] then
         
     | 
| 
       76 
     | 
    
         
            -
                     
     | 
| 
       77 
     | 
    
         
            -
                     
     | 
| 
      
 121 
     | 
    
         
            +
                    spacer=  " " * depht + " "
         
     | 
| 
      
 122 
     | 
    
         
            +
                    log.flat "#{spacer}* on failure => #{cmd[:on_failure]}"
         
     | 
| 
       78 
123 
     | 
    
         
             
                    treeview(cmd[:on_failure], depht+2)
         
     | 
| 
       79 
124 
     | 
    
         
             
                  end
         
     | 
| 
       80 
125 
     | 
    
         
             
                  if cmd[:on_success] then
         
     | 
| 
       81 
     | 
    
         
            -
                     
     | 
| 
       82 
     | 
    
         
            -
                     
     | 
| 
      
 126 
     | 
    
         
            +
                    spacer = " " * depht + " "
         
     | 
| 
      
 127 
     | 
    
         
            +
                    log.flat "#{spacer}* on success => #{cmd[:on_success]}"
         
     | 
| 
       83 
128 
     | 
    
         
             
                    treeview(cmd[:on_success],depht+2)
         
     | 
| 
       84 
129 
     | 
    
         
             
                  end
         
     | 
| 
       85 
130 
     | 
    
         
             
                  splash_exit case: :quiet_exit
         
     | 
| 
         @@ -88,17 +133,18 @@ module CLISplash 
     | 
|
| 
       88 
133 
     | 
    
         | 
| 
       89 
134 
     | 
    
         
             
                desc "list", "Show configured commands"
         
     | 
| 
       90 
135 
     | 
    
         
             
                long_desc <<-LONGDESC
         
     | 
| 
       91 
     | 
    
         
            -
                Show configured commands
         
     | 
| 
       92 
     | 
    
         
            -
                with --detail, show command details
         
     | 
| 
       93 
     | 
    
         
            -
                with --hostname, ask other  
     | 
| 
      
 136 
     | 
    
         
            +
                Show configured commands\n
         
     | 
| 
      
 137 
     | 
    
         
            +
                with --detail, show command details\n
         
     | 
| 
      
 138 
     | 
    
         
            +
                with --hostname, ask other Splash daemon via transport\n
         
     | 
| 
       94 
139 
     | 
    
         
             
                LONGDESC
         
     | 
| 
       95 
140 
     | 
    
         
             
                option :detail, :type => :boolean
         
     | 
| 
       96 
141 
     | 
    
         
             
                option :hostname, :type => :string
         
     | 
| 
       97 
142 
     | 
    
         
             
                def list
         
     | 
| 
      
 143 
     | 
    
         
            +
                  log = get_logger
         
     | 
| 
       98 
144 
     | 
    
         
             
                  list = {}
         
     | 
| 
       99 
145 
     | 
    
         
             
                  if options[:hostname] then
         
     | 
| 
       100 
     | 
    
         
            -
                     
     | 
| 
       101 
     | 
    
         
            -
                     
     | 
| 
      
 146 
     | 
    
         
            +
                    log.info "Remote Splash configured commands on #{options[:hostname]}:"
         
     | 
| 
      
 147 
     | 
    
         
            +
                    log.info  "ctrl+c for interrupt"
         
     | 
| 
       102 
148 
     | 
    
         
             
                    begin
         
     | 
| 
       103 
149 
     | 
    
         
             
                      transport = get_default_client
         
     | 
| 
       104 
150 
     | 
    
         
             
                      if transport.class == Hash  and transport.include? :case then
         
     | 
| 
         @@ -112,20 +158,20 @@ module CLISplash 
     | 
|
| 
       112 
158 
     | 
    
         
             
                      splash_exit case: :interrupt, more: "remote list Command"
         
     | 
| 
       113 
159 
     | 
    
         
             
                    end
         
     | 
| 
       114 
160 
     | 
    
         
             
                  else
         
     | 
| 
       115 
     | 
    
         
            -
                     
     | 
| 
      
 161 
     | 
    
         
            +
                    log.info "Splash configured commands :"
         
     | 
| 
       116 
162 
     | 
    
         
             
                    list = get_config.commands
         
     | 
| 
       117 
163 
     | 
    
         
             
                  end
         
     | 
| 
       118 
     | 
    
         
            -
                   
     | 
| 
      
 164 
     | 
    
         
            +
                  log.ko 'No configured commands found' if list.keys.empty?
         
     | 
| 
       119 
165 
     | 
    
         
             
                  list.keys.each do |command|
         
     | 
| 
       120 
     | 
    
         
            -
                     
     | 
| 
      
 166 
     | 
    
         
            +
                    log.item "#{command.to_s}"
         
     | 
| 
       121 
167 
     | 
    
         
             
                    if options[:detail] then
         
     | 
| 
       122 
     | 
    
         
            -
                       
     | 
| 
       123 
     | 
    
         
            -
                       
     | 
| 
       124 
     | 
    
         
            -
                       
     | 
| 
       125 
     | 
    
         
            -
                       
     | 
| 
      
 168 
     | 
    
         
            +
                      log.arrow "command line : '#{list[command][:command]}'"
         
     | 
| 
      
 169 
     | 
    
         
            +
                      log.arrow "command description : '#{list[command][:desc]}'"
         
     | 
| 
      
 170 
     | 
    
         
            +
                      log.arrow "command failure callback : '#{list[command.to_sym][:on_failure]}'" if list[command.to_sym][:on_failure]
         
     | 
| 
      
 171 
     | 
    
         
            +
                      log.arrow "command success callback : '#{list[command.to_sym][:on_success]}'" if list[command.to_sym][:on_success]
         
     | 
| 
       126 
172 
     | 
    
         
             
                      if list[command.to_sym][:schedule]
         
     | 
| 
       127 
173 
     | 
    
         
             
                        sched,val = list[command.to_sym][:schedule].flatten
         
     | 
| 
       128 
     | 
    
         
            -
                         
     | 
| 
      
 174 
     | 
    
         
            +
                        log.arrow "command scheduled : #{sched} #{val}."
         
     | 
| 
       129 
175 
     | 
    
         
             
                      end
         
     | 
| 
       130 
176 
     | 
    
         
             
                    end
         
     | 
| 
       131 
177 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -134,14 +180,42 @@ module CLISplash 
     | 
|
| 
       134 
180 
     | 
    
         | 
| 
       135 
181 
     | 
    
         | 
| 
       136 
182 
     | 
    
         
             
                desc "show COMMAND", "Show specific configured command COMMAND"
         
     | 
| 
      
 183 
     | 
    
         
            +
                long_desc <<-LONGDESC
         
     | 
| 
      
 184 
     | 
    
         
            +
                Show specific configured command COMMAND\n
         
     | 
| 
      
 185 
     | 
    
         
            +
                with --hostname <HOSTNAME>, an other Splash monitored server (only with Redis backend configured)
         
     | 
| 
      
 186 
     | 
    
         
            +
                LONGDESC
         
     | 
| 
      
 187 
     | 
    
         
            +
                option :hostname, :type => :string
         
     | 
| 
       137 
188 
     | 
    
         
             
                def show(command)
         
     | 
| 
       138 
     | 
    
         
            -
                   
     | 
| 
      
 189 
     | 
    
         
            +
                  log = get_logger
         
     | 
| 
      
 190 
     | 
    
         
            +
                  list = {}
         
     | 
| 
      
 191 
     | 
    
         
            +
                  if options[:hostname] then
         
     | 
| 
      
 192 
     | 
    
         
            +
                    log.info "Remote Splash configured commands on #{options[:hostname]}:"
         
     | 
| 
      
 193 
     | 
    
         
            +
                    log.info "ctrl+c for interrupt"
         
     | 
| 
      
 194 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 195 
     | 
    
         
            +
                      transport = get_default_client
         
     | 
| 
      
 196 
     | 
    
         
            +
                      if transport.class == Hash  and transport.include? :case then
         
     | 
| 
      
 197 
     | 
    
         
            +
                        splash_exit transport
         
     | 
| 
      
 198 
     | 
    
         
            +
                      else
         
     | 
| 
      
 199 
     | 
    
         
            +
                        list = transport.execute({ :verb => :list_commands,
         
     | 
| 
      
 200 
     | 
    
         
            +
                                              :return_to => "splash.#{Socket.gethostname}.returncli",
         
     | 
| 
      
 201 
     | 
    
         
            +
                                              :queue => "splash.#{options[:hostname]}.input" })
         
     | 
| 
      
 202 
     | 
    
         
            +
                      end
         
     | 
| 
      
 203 
     | 
    
         
            +
                    rescue Interrupt
         
     | 
| 
      
 204 
     | 
    
         
            +
                      splash_exit case: :interrupt, more: "remote list Command"
         
     | 
| 
      
 205 
     | 
    
         
            +
                    end
         
     | 
| 
      
 206 
     | 
    
         
            +
                  else
         
     | 
| 
      
 207 
     | 
    
         
            +
                    list = get_config.commands
         
     | 
| 
      
 208 
     | 
    
         
            +
                  end
         
     | 
| 
       139 
209 
     | 
    
         
             
                  if list.keys.include? command.to_sym then
         
     | 
| 
       140 
     | 
    
         
            -
                     
     | 
| 
       141 
     | 
    
         
            -
                     
     | 
| 
       142 
     | 
    
         
            -
                     
     | 
| 
       143 
     | 
    
         
            -
                     
     | 
| 
       144 
     | 
    
         
            -
                     
     | 
| 
      
 210 
     | 
    
         
            +
                    log.info "Splash command : #{command}"
         
     | 
| 
      
 211 
     | 
    
         
            +
                    log.item "command line : '#{list[command.to_sym][:command]}'"
         
     | 
| 
      
 212 
     | 
    
         
            +
                    log.item "command description : '#{list[command.to_sym][:desc]}'"
         
     | 
| 
      
 213 
     | 
    
         
            +
                    log.item "command failure callback : '#{list[command.to_sym][:on_failure]}'" if list[command.to_sym][:on_failure]
         
     | 
| 
      
 214 
     | 
    
         
            +
                    log.item "command success callback : '#{list[command.to_sym][:on_success]}'" if list[command.to_sym][:on_success]
         
     | 
| 
      
 215 
     | 
    
         
            +
                    if list[command.to_sym][:schedule]
         
     | 
| 
      
 216 
     | 
    
         
            +
                      sched,val = list[command.to_sym][:schedule].flatten
         
     | 
| 
      
 217 
     | 
    
         
            +
                      log.item "command scheduled : #{sched} #{val}."
         
     | 
| 
      
 218 
     | 
    
         
            +
                    end
         
     | 
| 
       145 
219 
     | 
    
         
             
                    splash_exit case: :quiet_exit
         
     | 
| 
       146 
220 
     | 
    
         
             
                  else
         
     | 
| 
       147 
221 
     | 
    
         
             
                    splash_exit case: :not_found, :more => 'Command not configured'
         
     | 
| 
         @@ -151,11 +225,12 @@ module CLISplash 
     | 
|
| 
       151 
225 
     | 
    
         | 
| 
       152 
226 
     | 
    
         
             
                desc "lastrun COMMAND", "Show last running result for specific configured command COMMAND"
         
     | 
| 
       153 
227 
     | 
    
         
             
                long_desc <<-LONGDESC
         
     | 
| 
       154 
     | 
    
         
            -
                Show last running result for specific configured command COMMAND
         
     | 
| 
      
 228 
     | 
    
         
            +
                Show last running result for specific configured command COMMAND\n
         
     | 
| 
       155 
229 
     | 
    
         
             
                with --hostname <HOSTNAME>, an other Splash monitored server (only with Redis backend configured)
         
     | 
| 
       156 
230 
     | 
    
         
             
                LONGDESC
         
     | 
| 
       157 
231 
     | 
    
         
             
                option :hostname, :type => :string
         
     | 
| 
       158 
232 
     | 
    
         
             
                def lastrun(command)
         
     | 
| 
      
 233 
     | 
    
         
            +
                  log = get_logger
         
     | 
| 
       159 
234 
     | 
    
         
             
                  backend = get_backend :execution_trace
         
     | 
| 
       160 
235 
     | 
    
         
             
                  redis = (backend.class == Splash::Backends::Redis)? true : false
         
     | 
| 
       161 
236 
     | 
    
         
             
                  if not redis and options[:hostname] then
         
     | 
| 
         @@ -166,7 +241,7 @@ module CLISplash 
     | 
|
| 
       166 
241 
     | 
    
         
             
                    list = backend.list("*", options[:hostname]).map(&:to_sym)
         
     | 
| 
       167 
242 
     | 
    
         
             
                  end
         
     | 
| 
       168 
243 
     | 
    
         
             
                  if list.include? command.to_sym then
         
     | 
| 
       169 
     | 
    
         
            -
                     
     | 
| 
      
 244 
     | 
    
         
            +
                    log.info "Splash command #{command} previous execution report:\n"
         
     | 
| 
       170 
245 
     | 
    
         
             
                    req  = { :key => command}
         
     | 
| 
       171 
246 
     | 
    
         
             
                    req[:hostname] = options[:hostname] if options[:hostname]
         
     | 
| 
       172 
247 
     | 
    
         
             
                    if backend.exist? req then
         
     | 
| 
         @@ -175,9 +250,9 @@ module CLISplash 
     | 
|
| 
       175 
250 
     | 
    
         
             
                          list_token: get_config.execution_template_tokens,
         
     | 
| 
       176 
251 
     | 
    
         
             
                          template_file: get_config.execution_template_path)
         
     | 
| 
       177 
252 
     | 
    
         
             
                      tp.map YAML::load(res)
         
     | 
| 
       178 
     | 
    
         
            -
                       
     | 
| 
      
 253 
     | 
    
         
            +
                      log.flat tp.output
         
     | 
| 
       179 
254 
     | 
    
         
             
                    else
         
     | 
| 
       180 
     | 
    
         
            -
                       
     | 
| 
      
 255 
     | 
    
         
            +
                      log.ko "Command not already runned."
         
     | 
| 
       181 
256 
     | 
    
         
             
                    end
         
     | 
| 
       182 
257 
     | 
    
         
             
                    splash_exit case: :quiet_exit
         
     | 
| 
       183 
258 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -187,11 +262,11 @@ module CLISplash 
     | 
|
| 
       187 
262 
     | 
    
         | 
| 
       188 
263 
     | 
    
         
             
                desc "getreportlist", "list all executions report results "
         
     | 
| 
       189 
264 
     | 
    
         
             
                long_desc <<-LONGDESC
         
     | 
| 
       190 
     | 
    
         
            -
                list all executions report results
         
     | 
| 
      
 265 
     | 
    
         
            +
                list all executions report results\n
         
     | 
| 
       191 
266 
     | 
    
         
             
                with --pattern <SEARCH>, search type string, wilcard * (group) ? (char)\n
         
     | 
| 
       192 
267 
     | 
    
         
             
                with --hostname <HOSTNAME>, an other Splash monitored server (only with Redis backend configured)\n
         
     | 
| 
       193 
268 
     | 
    
         
             
                with --all, get all execution report for all servers (only with Redis backend configured)\n
         
     | 
| 
       194 
     | 
    
         
            -
                with --detail, get major informations of each reports
         
     | 
| 
      
 269 
     | 
    
         
            +
                with --detail, get major informations of each reports\n
         
     | 
| 
       195 
270 
     | 
    
         
             
                --all and --hostname are exclusives
         
     | 
| 
       196 
271 
     | 
    
         
             
                LONGDESC
         
     | 
| 
       197 
272 
     | 
    
         
             
                option :pattern, :type => :string
         
     | 
| 
         @@ -199,6 +274,7 @@ module CLISplash 
     | 
|
| 
       199 
274 
     | 
    
         
             
                option :all, :type => :boolean, :negate => false
         
     | 
| 
       200 
275 
     | 
    
         
             
                option :detail, :type => :boolean
         
     | 
| 
       201 
276 
     | 
    
         
             
                def getreportlist
         
     | 
| 
      
 277 
     | 
    
         
            +
                  log = get_logger
         
     | 
| 
       202 
278 
     | 
    
         
             
                  if options[:hostname] and options[:all] then
         
     | 
| 
       203 
279 
     | 
    
         
             
                    splash_exit case: :options_incompatibility, more: "--all, --hostname"
         
     | 
| 
       204 
280 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -215,26 +291,26 @@ module CLISplash 
     | 
|
| 
       215 
291 
     | 
    
         
             
                  else
         
     | 
| 
       216 
292 
     | 
    
         
             
                    res = backend.list pattern
         
     | 
| 
       217 
293 
     | 
    
         
             
                  end
         
     | 
| 
       218 
     | 
    
         
            -
                   
     | 
| 
       219 
     | 
    
         
            -
                   
     | 
| 
      
 294 
     | 
    
         
            +
                  log.info "List of Executions reports :\n"
         
     | 
| 
      
 295 
     | 
    
         
            +
                  log.ko "Not reports found" if res.empty?
         
     | 
| 
       220 
296 
     | 
    
         
             
                  res.each do |item|
         
     | 
| 
       221 
297 
     | 
    
         
             
                    host = ""
         
     | 
| 
       222 
298 
     | 
    
         
             
                    command = ""
         
     | 
| 
       223 
299 
     | 
    
         
             
                    if options[:all]
         
     | 
| 
       224 
300 
     | 
    
         
             
                      host,command = item.split('#')
         
     | 
| 
       225 
     | 
    
         
            -
                       
     | 
| 
      
 301 
     | 
    
         
            +
                      log.item "Command : #{command} @ host : #{host}"
         
     | 
| 
       226 
302 
     | 
    
         
             
                    else
         
     | 
| 
       227 
303 
     | 
    
         
             
                      command = item
         
     | 
| 
       228 
     | 
    
         
            -
                       
     | 
| 
      
 304 
     | 
    
         
            +
                      log.item "Command : #{command}"
         
     | 
| 
       229 
305 
     | 
    
         
             
                    end
         
     | 
| 
       230 
306 
     | 
    
         
             
                    if options[:detail] then
         
     | 
| 
       231 
307 
     | 
    
         
             
                      req = { :key => command }
         
     | 
| 
       232 
308 
     | 
    
         
             
                      req[:hostname] = host if options[:all]
         
     | 
| 
       233 
309 
     | 
    
         
             
                      res = YAML::load(backend.get(req))
         
     | 
| 
       234 
     | 
    
         
            -
                       
     | 
| 
       235 
     | 
    
         
            -
                       
     | 
| 
       236 
     | 
    
         
            -
                       
     | 
| 
       237 
     | 
    
         
            -
                       
     | 
| 
      
 310 
     | 
    
         
            +
                      log.arrow "Status : #{res[:status]}"
         
     | 
| 
      
 311 
     | 
    
         
            +
                      log.arrow "Start date : #{res[:start_date]}"
         
     | 
| 
      
 312 
     | 
    
         
            +
                      log.arrow "End date : #{res[:end_date]}"
         
     | 
| 
      
 313 
     | 
    
         
            +
                      log.arrow "Execution time : #{res[:exec_time]}"
         
     | 
| 
       238 
314 
     | 
    
         
             
                    end
         
     | 
| 
       239 
315 
     | 
    
         
             
                  end
         
     | 
| 
       240 
316 
     | 
    
         
             
                  splash_exit case: :quiet_exit
         
     |