prometheus-splash 0.5.3 → 0.6.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/README.md +58 -60
- data/bin/splash +3 -0
- data/config/splash.yml +15 -2
- data/lib/splash/backends.rb +6 -0
- data/lib/splash/backends/file.rb +36 -0
- data/lib/splash/backends/redis.rb +44 -1
- data/lib/splash/cli.rb +7 -3
- data/lib/splash/cli/commands.rb +11 -4
- data/lib/splash/cli/config.rb +9 -1
- data/lib/splash/cli/daemon.rb +8 -1
- data/lib/splash/cli/documentation.rb +5 -2
- data/lib/splash/cli/logs.rb +14 -6
- data/lib/splash/cli/process.rb +9 -0
- data/lib/splash/cli/webadmin.rb +46 -0
- data/lib/splash/commands.rb +23 -2
- data/lib/splash/config.rb +141 -1
- data/lib/splash/config/flush.rb +9 -1
- data/lib/splash/config/sanitycheck.rb +6 -1
- data/lib/splash/config/service.rb +8 -1
- data/lib/splash/config/setup.rb +8 -3
- data/lib/splash/constants.rb +30 -2
- data/lib/splash/daemon.rb +5 -1
- data/lib/splash/daemon/controller.rb +21 -1
- data/lib/splash/daemon/metrics.rb +22 -7
- data/lib/splash/daemon/orchestrator.rb +21 -3
- data/lib/splash/daemon/orchestrator/grammar.rb +25 -5
- data/lib/splash/daemon/orchestrator/hooks.rb +10 -0
- data/lib/splash/dependencies.rb +10 -1
- data/lib/splash/exiter.rb +14 -0
- data/lib/splash/helpers.rb +69 -45
- data/lib/splash/loggers.rb +30 -4
- data/lib/splash/loggers/cli.rb +18 -3
- data/lib/splash/loggers/daemon.rb +14 -3
- data/lib/splash/loggers/dual.rb +14 -1
- data/lib/splash/loggers/web.rb +51 -0
- data/lib/splash/logs.rb +15 -4
- data/lib/splash/processes.rb +17 -5
- data/lib/splash/templates.rb +10 -0
- data/lib/splash/transports.rb +9 -0
- data/lib/splash/transports/rabbitmq.rb +33 -3
- data/lib/splash/webadmin.rb +122 -0
- data/lib/splash/webadmin/api/routes/commands.rb +28 -0
- data/lib/splash/webadmin/api/routes/config.rb +10 -0
- data/lib/splash/webadmin/api/routes/init.rb +2 -0
- data/lib/splash/webadmin/api/routes/logs.rb +59 -0
- data/lib/splash/webadmin/api/routes/process.rb +60 -0
- data/lib/splash/webadmin/main.rb +26 -0
- data/lib/splash/webadmin/portal/controllers/commands.rb +7 -0
- data/lib/splash/webadmin/portal/controllers/documentation.rb +6 -0
- data/lib/splash/webadmin/portal/controllers/home.rb +12 -0
- data/lib/splash/webadmin/portal/controllers/logs.rb +14 -0
- data/lib/splash/webadmin/portal/controllers/notfound.rb +5 -0
- data/lib/splash/webadmin/portal/controllers/processes.rb +14 -0
- data/lib/splash/webadmin/portal/controllers/proxy.rb +30 -0
- data/lib/splash/webadmin/portal/controllers/restclient.rb +19 -0
- data/lib/splash/webadmin/portal/init.rb +11 -0
- data/lib/splash/webadmin/portal/public/css/ultragreen.css +8544 -0
- data/lib/splash/webadmin/portal/public/fonts/FontAwesome.otf +0 -0
- data/lib/splash/webadmin/portal/public/fonts/fontawesome-webfont.ttf +0 -0
- data/lib/splash/webadmin/portal/public/fonts/fontawesome-webfont.woff +0 -0
- data/lib/splash/webadmin/portal/public/fonts/fontawesome-webfont.woff2 +0 -0
- data/lib/splash/webadmin/portal/public/images/logo_splash.png +0 -0
- data/lib/splash/webadmin/portal/public/images/logo_splash_reduce.png +0 -0
- data/lib/splash/webadmin/portal/public/images/logo_splash_tiny.png +0 -0
- data/lib/splash/webadmin/portal/views/commands.slim +49 -0
- data/lib/splash/webadmin/portal/views/documentation.slim +3 -0
- data/lib/splash/webadmin/portal/views/home.slim +78 -0
- data/lib/splash/webadmin/portal/views/layout.slim +43 -0
- data/lib/splash/webadmin/portal/views/logs.slim +32 -0
- data/lib/splash/webadmin/portal/views/nav.slim +17 -0
- data/lib/splash/webadmin/portal/views/not_found.slim +3 -0
- data/lib/splash/webadmin/portal/views/processes.slim +29 -0
- data/lib/splash/webadmin/portal/views/proxy.slim +13 -0
- data/lib/splash/webadmin/portal/views/restclient.slim +41 -0
- data/lib/splash/webadmin/portal/views/restclient_result.slim +29 -0
- data/prometheus-splash.gemspec +6 -0
- data/spec/helpers_spec.rb +119 -0
- metadata +128 -5
data/lib/splash/cli/commands.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
module CLISplash
|
3
2
|
|
3
|
+
# module for all Thor subcommands
|
4
|
+
module CLISplash
|
4
5
|
|
6
|
+
# Thor inherited class for commands management
|
5
7
|
class Commands < Thor
|
6
8
|
include Splash::Config
|
7
9
|
include Splash::Backends
|
@@ -11,6 +13,8 @@ module CLISplash
|
|
11
13
|
include Splash::Loggers
|
12
14
|
include Splash::Commands
|
13
15
|
|
16
|
+
|
17
|
+
# Thor method : execution of command
|
14
18
|
desc "execute NAME", "run for command/sequence or ack result"
|
15
19
|
long_desc <<-LONGDESC
|
16
20
|
execute command or sequence or ack result\n
|
@@ -74,6 +78,7 @@ module CLISplash
|
|
74
78
|
end
|
75
79
|
|
76
80
|
|
81
|
+
# Thor method : scheduling commands
|
77
82
|
desc "schedule NAME", "Schedule excution of command on Splash daemon"
|
78
83
|
long_desc <<-LONGDESC
|
79
84
|
Schedule excution of command on Splash daemon\n
|
@@ -116,7 +121,7 @@ module CLISplash
|
|
116
121
|
|
117
122
|
end
|
118
123
|
|
119
|
-
|
124
|
+
# Thor method : getting a treeview of sequence of commands
|
120
125
|
desc "treeview", "Show commands sequence tree"
|
121
126
|
long_desc <<-LONGDESC
|
122
127
|
Show commands sequence tree\n
|
@@ -164,6 +169,7 @@ module CLISplash
|
|
164
169
|
end
|
165
170
|
|
166
171
|
|
172
|
+
# Thor method : getting the list of avaible commands in splash config
|
167
173
|
desc "list", "Show configured commands"
|
168
174
|
long_desc <<-LONGDESC
|
169
175
|
Show configured commands\n
|
@@ -213,7 +219,7 @@ module CLISplash
|
|
213
219
|
splash_exit case: :quiet_exit
|
214
220
|
end
|
215
221
|
|
216
|
-
|
222
|
+
# Thor method: getting informations about a specific splash configuration defined command
|
217
223
|
desc "show COMMAND", "Show specific configured command COMMAND"
|
218
224
|
long_desc <<-LONGDESC
|
219
225
|
Show specific configured command COMMAND\n
|
@@ -259,7 +265,7 @@ module CLISplash
|
|
259
265
|
end
|
260
266
|
end
|
261
267
|
|
262
|
-
|
268
|
+
# Thor method : getting information on the last execution of a command
|
263
269
|
desc "lastrun COMMAND", "Show last running result for specific configured command COMMAND"
|
264
270
|
long_desc <<-LONGDESC
|
265
271
|
Show last running result for specific configured command COMMAND\n
|
@@ -299,6 +305,7 @@ module CLISplash
|
|
299
305
|
end
|
300
306
|
end
|
301
307
|
|
308
|
+
# Thor method : getting the list of avaibles executions reports
|
302
309
|
desc "getreportlist", "list all executions report results "
|
303
310
|
long_desc <<-LONGDESC
|
304
311
|
list all executions report results\n
|
data/lib/splash/cli/config.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
3
|
+
# module for all Thor subcommands
|
2
4
|
module CLISplash
|
3
5
|
|
6
|
+
# Thor inherited class for configuration management
|
4
7
|
class Config < Thor
|
5
8
|
include Splash::ConfigUtilities
|
6
9
|
include Splash::Helpers
|
7
10
|
include Splash::Exiter
|
8
11
|
include Splash::Loggers
|
9
12
|
|
10
|
-
|
13
|
+
# Thor method : running of Splash setup
|
11
14
|
desc "setup", "Setup installation fo Splash"
|
12
15
|
long_desc <<-LONGDESC
|
13
16
|
Setup installation fo Splash\n
|
@@ -19,12 +22,14 @@ module CLISplash
|
|
19
22
|
splash_exit acase
|
20
23
|
end
|
21
24
|
|
25
|
+
# Thor method : running of Splash sanitycheck
|
22
26
|
desc "sanitycheck", "Verify installation fo Splash"
|
23
27
|
def sanitycheck
|
24
28
|
acase = run_as_root :checkconfig
|
25
29
|
splash_exit acase
|
26
30
|
end
|
27
31
|
|
32
|
+
# Thor method : Getting the current Splash version
|
28
33
|
desc "version", "Display current Splash version"
|
29
34
|
def version
|
30
35
|
log = get_logger
|
@@ -34,12 +39,15 @@ module CLISplash
|
|
34
39
|
splash_exit case: :quiet_exit
|
35
40
|
end
|
36
41
|
|
42
|
+
# Thor method : Installing Splashd Systemd service file
|
37
43
|
desc "service", "Install Splashd Systemd service"
|
38
44
|
def service
|
39
45
|
acase = run_as_root :addservice
|
40
46
|
splash_exit acase
|
41
47
|
end
|
42
48
|
|
49
|
+
|
50
|
+
# Thor method : flushing configured backend
|
43
51
|
desc "flushbackend", "Flush configured backend"
|
44
52
|
def flushbackend
|
45
53
|
acase = run_as_root :flush_backend
|
data/lib/splash/cli/daemon.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
3
|
+
# module for all Thor subcommands
|
2
4
|
module CLISplash
|
3
5
|
|
6
|
+
# Thor inherited class for splashd daemon management
|
4
7
|
class CLIController < Thor
|
5
8
|
include Splash::Daemon::Controller
|
6
9
|
include Splash::Transports
|
@@ -8,6 +11,7 @@ module CLISplash
|
|
8
11
|
include Splash::Loggers
|
9
12
|
|
10
13
|
|
14
|
+
# Thor method : starting Splashd
|
11
15
|
option :foreground, :type => :boolean, :aliases => "-F"
|
12
16
|
option :purge, :type => :boolean, default: true
|
13
17
|
option :scheduling, :type => :boolean, default: true
|
@@ -23,7 +27,7 @@ module CLISplash
|
|
23
27
|
splash_exit acase
|
24
28
|
end
|
25
29
|
|
26
|
-
|
30
|
+
# Thor method : purge transport input queue of Splashd daemon
|
27
31
|
desc "purge", "Purge Transport Input queue of Daemon"
|
28
32
|
def purge
|
29
33
|
log = get_logger
|
@@ -39,18 +43,21 @@ module CLISplash
|
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
46
|
+
# Thor method : stopping Splashd
|
42
47
|
desc "stop", "Stopping Splash Daemon"
|
43
48
|
def stop
|
44
49
|
acase = run_as_root :stopdaemon
|
45
50
|
splash_exit acase
|
46
51
|
end
|
47
52
|
|
53
|
+
# Thor method : getting execution status of Splashd
|
48
54
|
desc "status", "Splash Daemon status"
|
49
55
|
def status
|
50
56
|
acase = run_as_root :statusdaemon
|
51
57
|
splash_exit acase
|
52
58
|
end
|
53
59
|
|
60
|
+
# Thor method : sending ping verb over transport in the input queue of Splashd
|
54
61
|
desc "ping HOSTNAME", "send a ping to HOSTNAME daemon over transport (need an active tranport), Typicallly RabbitMQ"
|
55
62
|
def ping(hostname=Socket.gethostname)
|
56
63
|
log = get_logger
|
@@ -1,11 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
3
|
+
# module for all Thor subcommands
|
2
4
|
module CLISplash
|
3
5
|
|
6
|
+
# Thor inherited class for documentation management
|
4
7
|
class Documentation < Thor
|
5
8
|
include Splash::Config
|
6
9
|
include Splash::Exiter
|
7
10
|
|
8
|
-
|
11
|
+
# Thor method : display the readme file Typicallly formatted in Markdown
|
9
12
|
desc "readme", "Display README file"
|
10
13
|
option :formatted, :type => :boolean, :default => true
|
11
14
|
def readme
|
@@ -14,7 +17,7 @@ module CLISplash
|
|
14
17
|
if options[:formatted] then
|
15
18
|
content = TTY::Markdown.parse_file(filename)
|
16
19
|
else
|
17
|
-
|
20
|
+
content = File::readlines(filename).join
|
18
21
|
end
|
19
22
|
pager = TTY::Pager.new
|
20
23
|
pager.page(content)
|
data/lib/splash/cli/logs.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
3
|
+
# module for all Thor subcommands
|
2
4
|
module CLISplash
|
3
5
|
|
6
|
+
# Thor inherited class for documentation management
|
4
7
|
class Logs < Thor
|
5
8
|
include Splash::Config
|
6
9
|
include Splash::Exiter
|
7
10
|
include Splash::Logs
|
8
11
|
|
9
|
-
|
12
|
+
# Thor method : running Splash configured logs monitors analyse
|
10
13
|
desc "analyse", "analyze logs defined in Splash config"
|
11
14
|
def analyse
|
12
15
|
log = get_logger
|
@@ -16,14 +19,14 @@ module CLISplash
|
|
16
19
|
full_status = true
|
17
20
|
results.output.each do |result|
|
18
21
|
if result[:status] == :clean then
|
19
|
-
log.ok "Log : #{result[:log]} : no errors"
|
22
|
+
log.ok "Log : #{result[:log]} with label : #{result[:label]} : no errors"
|
20
23
|
log.item "Detected pattern : #{result[:pattern]}"
|
21
24
|
log.item "Nb lines = #{result[:lines]}"
|
22
25
|
elsif result[:status] == :missing then
|
23
|
-
log.ko "Log : #{result[:log]} : missing !"
|
26
|
+
log.ko "Log : #{result[:log]} with label : #{result[:label]} : missing !"
|
24
27
|
log.item "Detected pattern : #{result[:pattern]}"
|
25
28
|
else
|
26
|
-
log.ko "Log : #{result[:log]} : #{result[:count]} errors"
|
29
|
+
log.ko "Log : #{result[:log]} with label : #{result[:label]} : #{result[:count]} errors"
|
27
30
|
log.item "Detected pattern : #{result[:pattern]}"
|
28
31
|
log.item "Nb lines = #{result[:lines]}"
|
29
32
|
end
|
@@ -39,6 +42,8 @@ module CLISplash
|
|
39
42
|
splash_exit case: :quiet_exit
|
40
43
|
end
|
41
44
|
|
45
|
+
|
46
|
+
# Thor method : running Splash configured logs monitors analyse and sending to Prometheus Pushgateway
|
42
47
|
desc "monitor", "monitor logs defined in Splash config"
|
43
48
|
def monitor
|
44
49
|
log = get_logger
|
@@ -49,20 +54,23 @@ module CLISplash
|
|
49
54
|
|
50
55
|
end
|
51
56
|
|
57
|
+
# Thor method : display a specific Splash configured log monitor
|
52
58
|
desc "show LOG", "show Splash configured log monitoring for LOG"
|
53
59
|
def show(logrecord)
|
54
60
|
log = get_logger
|
55
|
-
log_record_set = get_config.logs.select{|item| item[:log] == logrecord }
|
61
|
+
log_record_set = get_config.logs.select{|item| item[:log] == logrecord or item[:label] == logrecord.to_sym}
|
56
62
|
unless log_record_set.empty? then
|
57
63
|
record = log_record_set.first
|
58
64
|
log.info "Splash log monitor : #{record[:log]}"
|
59
65
|
log.item "pattern : /#{record[:pattern]}/"
|
66
|
+
log.item "label : #{record[:label]}"
|
60
67
|
splash_exit case: :quiet_exit
|
61
68
|
else
|
62
69
|
splash_exit case: :not_found, :more => "log not configured"
|
63
70
|
end
|
64
71
|
end
|
65
72
|
|
73
|
+
# Thor method : display the full list of Splash configured log monitors
|
66
74
|
desc "list", "List all Splash configured logs monitoring"
|
67
75
|
long_desc <<-LONGDESC
|
68
76
|
Show configured logs monitoring\n
|
@@ -75,7 +83,7 @@ module CLISplash
|
|
75
83
|
log_record_set = get_config.logs
|
76
84
|
log.ko 'No configured commands found' if log_record_set.empty?
|
77
85
|
log_record_set.each do |record|
|
78
|
-
log.item "log monitor : #{record[:log]}"
|
86
|
+
log.item "log monitor : #{record[:log]} label : #{record[:label]}"
|
79
87
|
if options[:detail] then
|
80
88
|
log.arrow "pattern : /#{record[:pattern]}/"
|
81
89
|
end
|
data/lib/splash/cli/process.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
# module for all Thor subcommands
|
1
4
|
module CLISplash
|
2
5
|
|
6
|
+
# Thor inherited class for Processes management
|
3
7
|
class Processes < Thor
|
4
8
|
include Splash::Config
|
5
9
|
include Splash::Exiter
|
6
10
|
include Splash::Processes
|
7
11
|
|
12
|
+
# Thor method : unning Splash configured processes monitors analyse
|
8
13
|
desc "analyse", "analyze processes defined in Splash config"
|
9
14
|
def analyse
|
10
15
|
log = get_logger
|
@@ -40,6 +45,8 @@ module CLISplash
|
|
40
45
|
splash_exit case: :quiet_exit
|
41
46
|
end
|
42
47
|
|
48
|
+
|
49
|
+
# Thor method : running Splash configured processes monitors analyse and sending to Prometheus Pushgateway
|
43
50
|
desc "monitor", "monitor processes defined in Splash config"
|
44
51
|
def monitor
|
45
52
|
log = get_logger
|
@@ -49,6 +56,7 @@ module CLISplash
|
|
49
56
|
splash_exit result.notify
|
50
57
|
end
|
51
58
|
|
59
|
+
# Thor method : display a specific Splash configured process monitor
|
52
60
|
desc "show PROCESS", "show Splash configured process record for PROCESS"
|
53
61
|
def show(record)
|
54
62
|
log = get_logger
|
@@ -66,6 +74,7 @@ module CLISplash
|
|
66
74
|
end
|
67
75
|
end
|
68
76
|
|
77
|
+
# Thor method : display the full list of Splash configured processes monitors
|
69
78
|
desc "list", "List all Splash configured process records"
|
70
79
|
long_desc <<-LONGDESC
|
71
80
|
List all Splash configured processes record\n
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
# module for all Thor subcommands
|
4
|
+
module CLISplash
|
5
|
+
|
6
|
+
# Thor inherited class for Processes management
|
7
|
+
class WebAdmin < Thor
|
8
|
+
include Splash::WebAdmin::Controller
|
9
|
+
include Splash::Config
|
10
|
+
include Splash::Exiter
|
11
|
+
include Splash::Helpers
|
12
|
+
|
13
|
+
|
14
|
+
# Thor method : stopping Splash Webadmin
|
15
|
+
desc "stop", "Stopping Splash Webadmin Daemon"
|
16
|
+
def stop
|
17
|
+
acase = run_as_root :stopdaemon, options
|
18
|
+
splash_exit acase
|
19
|
+
end
|
20
|
+
|
21
|
+
# Thor method : getting execution status of Splashd
|
22
|
+
desc "status", "Splash WebAdmin Daemon status"
|
23
|
+
def status
|
24
|
+
acase = run_as_root :statusdaemon, options
|
25
|
+
splash_exit acase
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
# Thor method : getting execution status of Splash WebAdmin
|
35
|
+
long_desc <<-LONGDESC
|
36
|
+
Starting Splash Daemon\n
|
37
|
+
LONGDESC
|
38
|
+
desc "start", "Splash WebAdmin Daemon status"
|
39
|
+
def start
|
40
|
+
acase = run_as_root :startdaemon
|
41
|
+
splash_exit acase
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/lib/splash/commands.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
3
|
+
# base Splash module
|
2
4
|
module Splash
|
5
|
+
|
6
|
+
# Splash Commands module/namespace
|
3
7
|
module Commands
|
8
|
+
|
9
|
+
# command execution wrapper
|
4
10
|
class CommandWrapper
|
5
11
|
include Splash::Templates
|
6
12
|
include Splash::Config
|
@@ -16,20 +22,27 @@ module Splash
|
|
16
22
|
@@registry.register(@@metric_exitcode)
|
17
23
|
@@registry.register(@@metric_time)
|
18
24
|
|
25
|
+
# Constructor
|
26
|
+
# @param [String] name the name of the command
|
19
27
|
def initialize(name)
|
20
28
|
@config = get_config
|
21
|
-
@url = "http://#{@config.prometheus_pushgateway_host}:#{@config.prometheus_pushgateway_port}"
|
29
|
+
@url = "http://#{@config.prometheus_pushgateway_host}:#{@config.prometheus_pushgateway_port}/#{@config.prometheus_pushgateway_path}"
|
22
30
|
@name = name
|
23
31
|
unless @config.commands.keys.include? @name.to_sym then
|
24
32
|
splash_exit case: :not_found, more: "command #{@name} is not defined in configuration"
|
25
33
|
end
|
26
34
|
end
|
27
35
|
|
36
|
+
# wrapper for ack command ( return 0 to prometheus via notify)
|
28
37
|
def ack
|
29
38
|
get_logger.info "Sending ack for command : '#{@name}'"
|
30
39
|
notify(0,0)
|
31
40
|
end
|
32
41
|
|
42
|
+
# send metrics to Prometheus PushGateway
|
43
|
+
# @param [String] value numeric.to_s
|
44
|
+
# @param [String] time execution time numeric.to_s
|
45
|
+
# @return [Hash] Exiter case :quiet_exit
|
33
46
|
def notify(value,time)
|
34
47
|
unless verify_service host: @config.prometheus_pushgateway_host ,port: @config.prometheus_pushgateway_port then
|
35
48
|
return { :case => :service_dependence_missing, :more => "Prometheus Notification not send."}
|
@@ -41,7 +54,15 @@ module Splash
|
|
41
54
|
return { :case => :quiet_exit}
|
42
55
|
end
|
43
56
|
|
44
|
-
|
57
|
+
# execute commands or sequence via callbacks, remote or not, notify prometheus, templatize report to backends
|
58
|
+
# the big cheese
|
59
|
+
# @param [Hash] options
|
60
|
+
# @option options [String] :session a number of session in case of Daemon Logger
|
61
|
+
# @option options [String] :hostname for remote execution (can't be use with commands with delegate_to)
|
62
|
+
# @option options [Boolean] :notify to activate prometheus notifications
|
63
|
+
# @option options [Boolean] :trace to activate execution report
|
64
|
+
# @option options [Boolean] :callback to activate sequence and callbacks executions
|
65
|
+
# @return [Hash] Exiter case
|
45
66
|
def call_and_notify(options)
|
46
67
|
log = get_logger
|
47
68
|
session = (options[:session])? options[:session] : get_session
|
data/lib/splash/config.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
Dir[File.dirname(__FILE__) + '/config/*.rb'].each {|file| require file }
|
3
3
|
|
4
|
+
# base Splash Module
|
4
5
|
module Splash
|
6
|
+
|
7
|
+
# Config namespace
|
5
8
|
module Config
|
6
9
|
include Splash::Helpers
|
7
10
|
include Splash::Constants
|
@@ -12,17 +15,33 @@ module Splash
|
|
12
15
|
class Configuration < Hash
|
13
16
|
include Splash::Constants
|
14
17
|
|
18
|
+
# constructor : read config file and map against Constants
|
15
19
|
def initialize(config_file=CONFIG_FILE)
|
16
20
|
config_from_file = readconf config_file
|
17
21
|
self[:version] = VERSION
|
18
22
|
self[:author] = "#{AUTHOR} <#{EMAIL}>"
|
19
23
|
self[:copyright] = "#{COPYRIGHT} #{LICENSE}"
|
24
|
+
|
25
|
+
self[:prometheus_url] = (config_from_file[:prometheus][:url])? config_from_file[:prometheus][:url] : PROMETHEUS_URL
|
26
|
+
|
27
|
+
self[:prometheus_pushgateway_path] = (config_from_file[:prometheus][:pushgateway][:path])? config_from_file[:prometheus][:pushgateway][:path] : PROMETHEUS_PUSHGATEWAY_PATH
|
20
28
|
self[:prometheus_pushgateway_host] = (config_from_file[:prometheus][:pushgateway][:host])? config_from_file[:prometheus][:pushgateway][:host] : PROMETHEUS_PUSHGATEWAY_HOST
|
21
29
|
self[:prometheus_pushgateway_port] = (config_from_file[:prometheus][:pushgateway][:port])? config_from_file[:prometheus][:pushgateway][:port] : PROMETHEUS_PUSHGATEWAY_PORT
|
22
30
|
self[:daemon_process_name] = (config_from_file[:daemon][:process_name])? config_from_file[:daemon][:process_name] : DAEMON_PROCESS_NAME
|
23
31
|
self[:daemon_logmon_scheduling] = (config_from_file[:daemon][:logmon_scheduling])? config_from_file[:daemon][:logmon_scheduling] : DAEMON_LOGMON_SCHEDULING
|
24
32
|
self[:daemon_metrics_scheduling] = (config_from_file[:daemon][:metrics_scheduling])? config_from_file[:daemon][:metrics_scheduling] : DAEMON_METRICS_SCHEDULING
|
25
33
|
self[:daemon_procmon_scheduling] = (config_from_file[:daemon][:procmon_scheduling])? config_from_file[:daemon][:procmon_scheduling] : DAEMON_PROCMON_SCHEDULING
|
34
|
+
|
35
|
+
|
36
|
+
self[:webadmin_port] = (config_from_file[:webadmin][:port])? config_from_file[:webadmin][:port] : WEBADMIN_PORT
|
37
|
+
self[:webadmin_ip] = (config_from_file[:webadmin][:ip])? config_from_file[:webadmin][:ip] : WEBADMIN_IP
|
38
|
+
self[:webadmin_proxy] = (config_from_file[:webadmin][:proxy])? config_from_file[:webadmin][:proxy] : WEBADMIN_PROXY
|
39
|
+
self[:webadmin_process_name] = (config_from_file[:webadmin][:process_name])? config_from_file[:webadmin][:process_name] : WEBADMIN_PROCESS_NAME
|
40
|
+
self[:webadmin_pid_file] = (config_from_file[:webadmin][:files][:pid_file])? config_from_file[:webadmin][:files][:pid_file] : WEBADMIN_PID_FILE
|
41
|
+
self[:webadmin_stdout_trace] = (config_from_file[:webadmin][:files][:stdout_trace])? config_from_file[:webadmin][:files][:stdout_trace] : WEBADMIN_STDOUT_TRACE
|
42
|
+
self[:webadmin_stderr_trace] = (config_from_file[:webadmin][:files][:stderr_trace])? config_from_file[:webadmin][:files][:stderr_trace] : WEBADMIN_STDERR_TRACE
|
43
|
+
|
44
|
+
|
26
45
|
self[:execution_template_tokens] = EXECUTION_TEMPLATE_TOKENS_LIST
|
27
46
|
self[:execution_template_path] = (config_from_file[:templates][:execution][:path])? config_from_file[:templates][:execution][:path] : EXECUTION_TEMPLATE
|
28
47
|
self[:pid_path] = (config_from_file[:daemon][:paths][:pid_path])? config_from_file[:daemon][:paths][:pid_path] : DAEMON_PID_PATH
|
@@ -43,79 +62,190 @@ module Splash
|
|
43
62
|
|
44
63
|
# @!group accessors on configurations Items
|
45
64
|
|
65
|
+
# getter for full Config Hash
|
66
|
+
# @return [Hash]
|
67
|
+
def full
|
68
|
+
return self
|
69
|
+
end
|
70
|
+
|
71
|
+
# getter for loggers Hash Config sample
|
72
|
+
# @return [Hash]
|
46
73
|
def loggers
|
47
74
|
return self[:loggers]
|
48
75
|
end
|
49
76
|
|
77
|
+
# getter for backends Hash Config sample
|
78
|
+
# @return [Hash]
|
50
79
|
def backends
|
51
80
|
return self[:backends]
|
52
81
|
end
|
53
82
|
|
83
|
+
# getter for transports Hash Config sample
|
84
|
+
# @return [Hash]
|
54
85
|
def transports
|
55
86
|
return self[:transports]
|
56
87
|
end
|
57
88
|
|
89
|
+
# getter for daemon_logmon_scheduling Hash Config sample
|
90
|
+
# @return [Hash]
|
58
91
|
def daemon_logmon_scheduling
|
59
92
|
return self[:daemon_logmon_scheduling]
|
60
93
|
end
|
61
94
|
|
95
|
+
# getter for daemon_procmon_scheduling Hash Config sample
|
96
|
+
# @return [Hash]
|
62
97
|
def daemon_procmon_scheduling
|
63
98
|
return self[:daemon_procmon_scheduling]
|
64
99
|
end
|
65
100
|
|
101
|
+
# getter for daemon_metrics_scheduling Hash Config sample
|
102
|
+
# @return [Hash]
|
66
103
|
def daemon_metrics_scheduling
|
67
104
|
return self[:daemon_metrics_scheduling]
|
68
105
|
end
|
69
106
|
|
107
|
+
# getter for execution_template_path Hash Config sample
|
108
|
+
# @return [String]
|
70
109
|
def execution_template_path
|
71
110
|
return self[:execution_template_path]
|
72
111
|
end
|
112
|
+
|
113
|
+
# getter for execution_template_tokens Hash Config sample
|
114
|
+
# @return [Array]
|
73
115
|
def execution_template_tokens
|
74
116
|
return self[:execution_template_tokens]
|
75
117
|
end
|
118
|
+
|
119
|
+
|
120
|
+
# getter for webadmin_port Hash Config sample
|
121
|
+
# @return [Fixnum]
|
122
|
+
def webadmin_port
|
123
|
+
return self[:webadmin_port]
|
124
|
+
end
|
125
|
+
|
126
|
+
# getter for webadmin_ip Hash Config sample
|
127
|
+
# @return [String]
|
128
|
+
def webadmin_ip
|
129
|
+
return self[:webadmin_ip]
|
130
|
+
end
|
131
|
+
|
132
|
+
# getter for webadmin_proxy Hash Config sample
|
133
|
+
# @return [TrueClass|FalseClass]
|
134
|
+
def webadmin_proxy
|
135
|
+
return self[:webadmin_proxy]
|
136
|
+
end
|
137
|
+
|
138
|
+
# getter for webadmin_process_name Config sample
|
139
|
+
# @return [String]
|
140
|
+
def webadmin_process_name
|
141
|
+
return self[:webadmin_process_name]
|
142
|
+
end
|
143
|
+
|
144
|
+
# getter for webadmin_full_pid_path Config sample
|
145
|
+
# @return [String]
|
146
|
+
def webadmin_full_pid_path
|
147
|
+
return "#{self[:pid_path]}/#{self[:webadmin_pid_file]}"
|
148
|
+
end
|
149
|
+
|
150
|
+
# getter for webadmin_full_stdout_trace_path Config sample
|
151
|
+
# @return [String]
|
152
|
+
def webadmin_full_stdout_trace_path
|
153
|
+
return "#{self[:trace_path]}/#{self[:webadmin_stdout_trace]}"
|
154
|
+
end
|
155
|
+
|
156
|
+
# getter for webadmin_full_stderr_trace_path Config sample
|
157
|
+
# @return [String]
|
158
|
+
def webadmin_full_stderr_trace_path
|
159
|
+
return "#{self[:trace_path]}/#{self[:webadmin_stderr_trace]}"
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
# getter for logs Hash Config sample
|
166
|
+
# @return [Hash]
|
76
167
|
def logs
|
77
168
|
return self[:logs]
|
78
169
|
end
|
79
170
|
|
171
|
+
# getter for commands Hash Config sample
|
172
|
+
# @return [Hash]
|
80
173
|
def commands
|
81
174
|
return self[:commands]
|
82
175
|
end
|
83
176
|
|
177
|
+
# getter for processes Hash Config sample
|
178
|
+
# @return [Hash]
|
84
179
|
def processes
|
85
180
|
return self[:processes]
|
86
181
|
end
|
87
182
|
|
183
|
+
|
184
|
+
# getter for author Config sample
|
185
|
+
# @return [String]
|
88
186
|
def author
|
89
187
|
return self[:author]
|
90
188
|
end
|
91
189
|
|
190
|
+
# getter for copyright Config sample
|
191
|
+
# @return [String]
|
92
192
|
def copyright
|
93
193
|
return self[:copyright]
|
94
194
|
end
|
95
195
|
|
196
|
+
# getter for version Config sample
|
197
|
+
# @return [String]
|
96
198
|
def version
|
97
199
|
return self[:version]
|
98
200
|
end
|
99
201
|
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
# getter for daemon_process_name Config sample
|
206
|
+
# @return [String]
|
100
207
|
def daemon_process_name
|
101
208
|
return self[:daemon_process_name]
|
102
209
|
end
|
103
210
|
|
211
|
+
# getter for prometheus_pushgateway_host Config sample
|
212
|
+
# @return [String]
|
104
213
|
def prometheus_pushgateway_host
|
105
214
|
return self[:prometheus_pushgateway_host]
|
106
215
|
end
|
216
|
+
|
217
|
+
# getter for prometheus_pushgateway_port Config sample
|
218
|
+
# @return [String]
|
107
219
|
def prometheus_pushgateway_port
|
108
220
|
return self[:prometheus_pushgateway_port]
|
109
221
|
end
|
110
222
|
|
223
|
+
# getter for prometheus_pushgateway_path Config sample
|
224
|
+
# @return [String]
|
225
|
+
def prometheus_pushgateway_path
|
226
|
+
return self[:prometheus_pushgateway_path]
|
227
|
+
end
|
228
|
+
|
229
|
+
# getter for prometheus_url Config sample
|
230
|
+
# @return [String]
|
231
|
+
def prometheus_url
|
232
|
+
return self[:prometheus_url]
|
233
|
+
end
|
234
|
+
|
235
|
+
# getter for full_pid_path Config sample
|
236
|
+
# @return [String]
|
111
237
|
def full_pid_path
|
112
238
|
return "#{self[:pid_path]}/#{self[:pid_file]}"
|
113
239
|
end
|
114
240
|
|
241
|
+
# getter for full_stdout_trace_path Config sample
|
242
|
+
# @return [String]
|
115
243
|
def full_stdout_trace_path
|
116
244
|
return "#{self[:trace_path]}/#{self[:stdout_trace]}"
|
117
245
|
end
|
118
246
|
|
247
|
+
# getter for full_stderr_trace_path Config sample
|
248
|
+
# @return [String]
|
119
249
|
def full_stderr_trace_path
|
120
250
|
return "#{self[:trace_path]}/#{self[:stderr_trace]}"
|
121
251
|
end
|
@@ -123,6 +253,10 @@ module Splash
|
|
123
253
|
# @!endgroup
|
124
254
|
|
125
255
|
private
|
256
|
+
|
257
|
+
# read config file
|
258
|
+
# @param [String] file default from CONFIG_FILE
|
259
|
+
# @return [Hash] The config global Hash from YAML
|
126
260
|
def readconf(file = CONFIG_FILE)
|
127
261
|
return YAML.load_file(file)[:splash]
|
128
262
|
end
|
@@ -133,6 +267,7 @@ module Splash
|
|
133
267
|
|
134
268
|
|
135
269
|
@@config=nil
|
270
|
+
|
136
271
|
# factory of Configuration Class instance
|
137
272
|
# @param [String] config_file the path of the YAML Config file
|
138
273
|
# @return [SPlash::Config::Configuration]
|
@@ -140,7 +275,12 @@ module Splash
|
|
140
275
|
return @@config ||= Configuration::new(config_file)
|
141
276
|
end
|
142
277
|
|
143
|
-
|
278
|
+
# reset of Configuration Class instance
|
279
|
+
# @param [String] config_file the path of the YAML Config file
|
280
|
+
# @return [SPlash::Config::Configuration]
|
281
|
+
def rehash_config(config_file=CONFIG_FILE)
|
282
|
+
return @@config = Configuration::new(config_file)
|
283
|
+
end
|
144
284
|
|
145
285
|
|
146
286
|
end
|