prometheus-splash 0.6.0 → 0.8.2

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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -1
  3. data/README.md +1 -1
  4. data/config/splash.yml +97 -11
  5. data/lib/splash/backends.rb +1 -0
  6. data/lib/splash/cli.rb +4 -1
  7. data/lib/splash/cli/commands.rb +127 -7
  8. data/lib/splash/cli/daemon.rb +41 -1
  9. data/lib/splash/cli/logs.rb +111 -47
  10. data/lib/splash/cli/process.rb +112 -52
  11. data/lib/splash/cli/sequences.rb +114 -0
  12. data/lib/splash/cli/transfers.rb +213 -0
  13. data/lib/splash/cli/webadmin.rb +3 -3
  14. data/lib/splash/commands.rb +89 -22
  15. data/lib/splash/config.rb +149 -62
  16. data/lib/splash/config/sanitycheck.rb +1 -1
  17. data/lib/splash/constants.rb +11 -11
  18. data/lib/splash/daemon/controller.rb +10 -10
  19. data/lib/splash/daemon/metrics.rb +8 -8
  20. data/lib/splash/daemon/orchestrator.rb +96 -35
  21. data/lib/splash/daemon/orchestrator/grammar.rb +16 -1
  22. data/lib/splash/dependencies.rb +8 -0
  23. data/lib/splash/exiter.rb +1 -1
  24. data/lib/splash/helpers.rb +22 -4
  25. data/lib/splash/loggers/cli.rb +2 -10
  26. data/lib/splash/logs.rb +91 -17
  27. data/lib/splash/processes.rb +88 -17
  28. data/lib/splash/sequences.rb +105 -0
  29. data/lib/splash/transfers.rb +229 -0
  30. data/lib/splash/transports/rabbitmq.rb +0 -1
  31. data/lib/splash/webadmin.rb +4 -4
  32. data/lib/splash/webadmin/api/routes/commands.rb +2 -2
  33. data/lib/splash/webadmin/api/routes/config.rb +53 -2
  34. data/lib/splash/webadmin/api/routes/logs.rb +32 -17
  35. data/lib/splash/webadmin/api/routes/process.rb +4 -4
  36. data/lib/splash/webadmin/api/routes/sequences.rb +28 -0
  37. data/lib/splash/webadmin/main.rb +3 -2
  38. data/lib/splash/webadmin/portal/controllers/commands.rb +2 -0
  39. data/lib/splash/webadmin/portal/controllers/documentation.rb +3 -1
  40. data/lib/splash/webadmin/portal/controllers/home.rb +24 -0
  41. data/lib/splash/webadmin/portal/controllers/logs.rb +44 -1
  42. data/lib/splash/webadmin/portal/controllers/processes.rb +2 -0
  43. data/lib/splash/webadmin/portal/controllers/proxy.rb +15 -8
  44. data/lib/splash/webadmin/portal/controllers/restclient.rb +7 -2
  45. data/lib/splash/webadmin/portal/controllers/sequences.rb +9 -0
  46. data/lib/splash/webadmin/portal/init.rb +2 -2
  47. data/lib/splash/webadmin/portal/public/css/ultragreen.css +6 -0
  48. data/lib/splash/webadmin/portal/public/favicon.ico +0 -0
  49. data/lib/splash/webadmin/portal/views/commands.slim +1 -1
  50. data/lib/splash/webadmin/portal/views/documentation.slim +1 -1
  51. data/lib/splash/webadmin/portal/views/home.slim +53 -9
  52. data/lib/splash/webadmin/portal/views/layout.slim +2 -2
  53. data/lib/splash/webadmin/portal/views/logs.slim +68 -21
  54. data/lib/splash/webadmin/portal/views/logs_form.slim +24 -0
  55. data/lib/splash/webadmin/portal/views/nav.slim +1 -1
  56. data/lib/splash/webadmin/portal/views/not_found.slim +1 -1
  57. data/lib/splash/webadmin/portal/views/processes.slim +1 -1
  58. data/lib/splash/webadmin/portal/views/proxy.slim +5 -2
  59. data/lib/splash/webadmin/portal/views/restclient.slim +7 -4
  60. data/lib/splash/webadmin/portal/views/restclient_result.slim +24 -20
  61. data/lib/splash/webadmin/portal/views/sequences.slim +50 -0
  62. data/prometheus-splash.gemspec +5 -2
  63. metadata +69 -4
@@ -0,0 +1,24 @@
1
+ - unless @data.empty?
2
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Modify Splash log monitoring : #{@data[:label]}
3
+ - else
4
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Add new Splash log monitoring
5
+
6
+ script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"
7
+
8
+ form.uk-form.uk-form-horizontal#query action="/save_log" method="POST"
9
+ label.uk-form-label for="label" Label
10
+ <input class="uk-form-width-large" id="label" type="text" placeholder="label" name="label" value="#{@data[:label].to_s}" required>
11
+ div &nbsp;
12
+ label.uk-form-label for="pattern" Pattern
13
+ <input class="uk-form-width-large" id="pattern" type="text" placeholder="pattern" name="pattern" value="#{@data[:pattern]}" required>
14
+ div &nbsp;
15
+ label.uk-form-label for="log" Log file
16
+ <input class="uk-form-width-large" id="log" type="text" placeholder="log" name="log" value="#{@data[:log]}" required>
17
+ div &nbsp;
18
+ - unless @data.empty?
19
+ input type="hidden" name="update" value="true"
20
+ input type="hidden" name="old_label" value="#{@data[:old_label].to_s}"
21
+ div.uk-align-right
22
+ input.uk-button.uk-button-small-primary type="submit" value="Submit"
23
+ javascript:
24
+ $("#query").validate();
@@ -3,7 +3,7 @@ nav.uk-navbar.uk-navbar-attached(data-uk-sticky)
3
3
  ul.uk-navbar-nav.uk-hidden-small
4
4
  - for item in @menu
5
5
  li class=( (item == @current_item)? "uk-active" : "uk-inactive")
6
- a href="/#{item.downcase}" title="Access to #{item.capitalize}" <i class="uk-icon-#{@menu_icons[item]}"></i> #{item.capitalize}
6
+ a.uk-navbar-nav-subtitle href="/#{item.downcase}" title="Access to #{item.capitalize}" <i class="uk-icon-#{@menu_icons[item]}"></i><div> #{item.capitalize}</div>
7
7
  a.uk-navbar-toggle.uk-visible-small(href="#offcanvas" data-uk-offcanvas)
8
8
  div.uk-navbar-brand.uk-navbar-left.uk-visible-small
9
9
  <i class="uk-icon-arrow-left"></i> Menu
@@ -1,3 +1,3 @@
1
- h2 404 : Page not found
1
+ h2.uk-text-danger 404 : Page not found
2
2
  p Ressource or page #{@path} not found
3
3
  p Please click <a href='/'>here</a> to return home
@@ -1,4 +1,4 @@
1
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Processes configured in Splash
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Processes configured in Splash
2
2
 
3
3
  div.uk-width-medium-1-1
4
4
  div.uk-panel.uk-panel-box
@@ -1,7 +1,7 @@
1
1
  - if @proxy
2
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Proxies for Prometheus components
2
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Proxies for Prometheus components
3
3
  - else
4
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Links for Prometheus components
4
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Links for Prometheus components
5
5
  div.uk-width-medium-1-1
6
6
  div.uk-panel.uk-panel-box
7
7
  ul.uk-list
@@ -11,3 +11,6 @@ div.uk-width-medium-1-1
11
11
  li
12
12
  i.uk-icon-hand-o-right
13
13
  a href="#{@pushgateway_url}" &nbsp;Prometheus PushGateway
14
+ li
15
+ i.uk-icon-hand-o-right
16
+ a href="#{@alertmanager_url}" &nbsp;Prometheus Alertmanager
@@ -1,4 +1,4 @@
1
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;REST Client
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;REST Client
2
2
 
3
3
  div.uk-grid
4
4
  div.uk-width-1-1
@@ -7,7 +7,7 @@ div.uk-grid
7
7
  <i class="uk-icon-question-circle"></i> &nbsp;&nbsp;Request
8
8
  form.uk-form.uk-form-horizontal#query action="/restclient/query" method="POST"
9
9
  label.uk-form-label for="method" Method
10
- select.uk-form-large#method name="method"
10
+ select#method name="method"
11
11
  option GET
12
12
  option POST
13
13
  option DELETE
@@ -15,8 +15,11 @@ div.uk-grid
15
15
  div &nbsp;
16
16
  label.uk-form-label for="url" Endpoint
17
17
  input.uk-form-width-large#url type="text" placeholder="url" name="url"
18
- dev.uk-align-right
19
- input.uk-button.uk-button-primary type="submit" value="Send"
18
+ div &nbsp;
19
+ label.uk-form-label for="body" Body
20
+ textarea.uk-form-large cols="50" name="body" rows="5" placeholder="body"
21
+ div.uk-align-right
22
+ input.uk-button.uk-button-small-primary type="submit" value="Send"
20
23
 
21
24
  div.uk-grid
22
25
  div.uk-width-1-1
@@ -1,28 +1,32 @@
1
- di &nbsp;
1
+ div &nbsp;
2
2
  ul.uk-list
3
3
  li <b>HTTP Method</b> : #{@method}
4
4
  li <b>URL</b> : #{@url}
5
5
  h3 Result :
6
6
  - unless @result == false
7
- table.uk_table
8
- tr
9
- td.uk-width-2-10
10
- i.uk-icon-dollar
11
- | &nbsp;<b>Return code :</b>
12
- td.uk-width-8-10 #{@result.code}
13
- tr
14
- td.uk-width-2-10
15
- i.uk-icon-file-o
16
- | &nbsp;<b>Body :</b>
17
- td.uk-width-8-10.uk-scrollable-text <pre><code>#{@result}</code></pre>
18
- tr
19
- td.uk-width-2-10
20
- i.uk-icon-header
21
- | &nbsp;<b>Headers :</b>
22
- td.uk-width-8-10
23
- ul
24
- - @result.headers.each do |hkey,value|
25
- li <i><b>#{hkey}:</b> &nbsp; &nbsp; #{value}</i>
7
+ div.uk-grid.uk-text-small
8
+ div.uk-width-1-2
9
+ table.uk-table
10
+ tr
11
+ td.uk-width-2-10
12
+ i.uk-icon-file-o
13
+ | &nbsp;<b>Body :</b>
14
+ td.uk-width-8-10.uk-scrollable-text <pre><code>#{@result}</code></pre>
15
+ div.uk-width-1-2
16
+ table.uk-table
17
+ tr
18
+ td.uk-width-2-10
19
+ i.uk-icon-dollar
20
+ | &nbsp;<b>Return code :</b>
21
+ td.uk-width-8-10 #{@result.code}
22
+ tr
23
+ td.uk-width-2-10
24
+ i.uk-icon-header
25
+ | &nbsp;<b>Headers :</b>
26
+ td.uk-width-8-10
27
+ ul
28
+ - @result.headers.each do |hkey,value|
29
+ li <i><b>#{hkey}:</b> &nbsp; &nbsp; #{value}</i>
26
30
 
27
31
  - else
28
32
  div.uk-alert.uk-alert-danger
@@ -0,0 +1,50 @@
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Sequences configured in Splash
2
+
3
+ div.uk-width-medium-1-1
4
+ div.uk-panel.uk-panel-box
5
+ span.uk-text-large.uk-text-bold List of sequences availables
6
+ br
7
+
8
+ div.uk-accordion(data-uk-accordion)
9
+ - @data.each do |sequence,content|
10
+ h3.uk-accordion-title <b>Name</b> : #{sequence}
11
+ div.uk-accordion-content
12
+ table.uk-table.uk-table-hover.uk-table-striped
13
+ thead
14
+ tr
15
+ th Options
16
+ th Definition
17
+ th Actions
18
+ tbody
19
+ tr
20
+ td
21
+ dl.uk-description-list-horizontal
22
+
23
+ - if content[:options]
24
+ - if content[:options][:continue]
25
+ ul
26
+ li <i class="uk-icon-check-square-o"></i>&nbsp;<b>Continue execution on error</b> : #{content[:options][:continue]}
27
+ - if content[:schedule]
28
+ ul
29
+ li <i class="uk-icon-calendar"></i>&nbsp;<b>Scheduling</b> :
30
+ <ul>
31
+ <li> <b><i>Type</b></i> : #{content[:schedule].keys.first}</li>
32
+ <li> <b><i>Value</b></i> : #{content[:schedule].values.first}</li>
33
+ </ul>
34
+ td
35
+ dl.uk-description-list-horizontal
36
+ - content[:definition].each_with_index do |step,i|
37
+ dt <i class="uk-icon-check-square-o"></i>&nbsp;Step #{i+1} :
38
+ dd #{step[:step]}
39
+ ul
40
+ li <i class="uk-icon-cog"></i>&nbsp;<b>Command</b> : #{step[:command]}
41
+ - if step[:on_host]
42
+ li <i class="uk-icon-chevron-circle-right"></i>&nbsp;<b>Remote execution target</b> : #{step[:on_host]}
43
+ - if not step[:callback].nil?
44
+ li <i class="uk-icon-share-square-o"></i>&nbsp;<b>Execute Callback</b> : #{step[:callback]}
45
+ - if not step[:trace].nil?
46
+ li <i class="uk-icon-pencil-square-o"></i>&nbsp;<b>Trace Execution</b> : #{step[:trace]}
47
+ - if not step[:notify].nil?
48
+ li <i class="uk-icon-external-link"></i>&nbsp;<b>Notify Execution in Prometheus</b> : #{step[:notify]}
49
+
50
+ td
@@ -26,7 +26,10 @@ Gem::Specification.new do |spec|
26
26
  spec.add_runtime_dependency 'bunny','~> 2.15.0'
27
27
  spec.add_runtime_dependency 'ps-ruby','~> 0.0.4'
28
28
  spec.add_runtime_dependency 'tty-markdown','~> 0.6.0'
29
- spec.add_runtime_dependency 'tty-pager','~> 0.12.1'
29
+ spec.add_runtime_dependency 'tty-pager','~> 0.12.0'
30
+ spec.add_runtime_dependency 'tty-table','~> 0.11.0'
31
+ spec.add_runtime_dependency 'net-ssh','~> 6.1.0'
32
+ spec.add_runtime_dependency 'net-scp','~> 3.0.0'
30
33
  spec.add_runtime_dependency 'colorize','~> 0.8.1'
31
34
  spec.add_runtime_dependency 'sinatra','~> 2.1.0'
32
35
  spec.add_runtime_dependency 'thin','~> 1.7.2'
@@ -41,6 +44,6 @@ Gem::Specification.new do |spec|
41
44
  spec.add_development_dependency 'roodi', '~> 5.0.0'
42
45
  spec.add_development_dependency 'code_statistics', '~> 0.2.13'
43
46
  spec.add_development_dependency 'yard-rspec', '~> 0.1'
44
-
47
+ spec.add_development_dependency 'bundler', '~> 2.1.4'
45
48
 
46
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus-splash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Romain GEORGES
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-07 00:00:00.000000000 Z
11
+ date: 2020-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -114,14 +114,56 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.12.1
117
+ version: 0.12.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.12.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: tty-table
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.11.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.11.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: net-ssh
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 6.1.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 6.1.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: net-scp
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 3.0.0
118
160
  type: :runtime
119
161
  prerelease: false
120
162
  version_requirements: !ruby/object:Gem::Requirement
121
163
  requirements:
122
164
  - - "~>"
123
165
  - !ruby/object:Gem::Version
124
- version: 0.12.1
166
+ version: 3.0.0
125
167
  - !ruby/object:Gem::Dependency
126
168
  name: colorize
127
169
  requirement: !ruby/object:Gem::Requirement
@@ -318,6 +360,20 @@ dependencies:
318
360
  - - "~>"
319
361
  - !ruby/object:Gem::Version
320
362
  version: '0.1'
363
+ - !ruby/object:Gem::Dependency
364
+ name: bundler
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - "~>"
368
+ - !ruby/object:Gem::Version
369
+ version: 2.1.4
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - "~>"
375
+ - !ruby/object:Gem::Version
376
+ version: 2.1.4
321
377
  description: Prometheus Logs and Batchs supervision over PushGateway and commands
322
378
  orchestration
323
379
  email:
@@ -350,6 +406,8 @@ files:
350
406
  - lib/splash/cli/documentation.rb
351
407
  - lib/splash/cli/logs.rb
352
408
  - lib/splash/cli/process.rb
409
+ - lib/splash/cli/sequences.rb
410
+ - lib/splash/cli/transfers.rb
353
411
  - lib/splash/cli/webadmin.rb
354
412
  - lib/splash/commands.rb
355
413
  - lib/splash/config.rb
@@ -374,7 +432,9 @@ files:
374
432
  - lib/splash/loggers/web.rb
375
433
  - lib/splash/logs.rb
376
434
  - lib/splash/processes.rb
435
+ - lib/splash/sequences.rb
377
436
  - lib/splash/templates.rb
437
+ - lib/splash/transfers.rb
378
438
  - lib/splash/transports.rb
379
439
  - lib/splash/transports/rabbitmq.rb
380
440
  - lib/splash/webadmin.rb
@@ -383,6 +443,7 @@ files:
383
443
  - lib/splash/webadmin/api/routes/init.rb
384
444
  - lib/splash/webadmin/api/routes/logs.rb
385
445
  - lib/splash/webadmin/api/routes/process.rb
446
+ - lib/splash/webadmin/api/routes/sequences.rb
386
447
  - lib/splash/webadmin/main.rb
387
448
  - lib/splash/webadmin/portal/controllers/commands.rb
388
449
  - lib/splash/webadmin/portal/controllers/documentation.rb
@@ -392,8 +453,10 @@ files:
392
453
  - lib/splash/webadmin/portal/controllers/processes.rb
393
454
  - lib/splash/webadmin/portal/controllers/proxy.rb
394
455
  - lib/splash/webadmin/portal/controllers/restclient.rb
456
+ - lib/splash/webadmin/portal/controllers/sequences.rb
395
457
  - lib/splash/webadmin/portal/init.rb
396
458
  - lib/splash/webadmin/portal/public/css/ultragreen.css
459
+ - lib/splash/webadmin/portal/public/favicon.ico
397
460
  - lib/splash/webadmin/portal/public/fonts/FontAwesome.otf
398
461
  - lib/splash/webadmin/portal/public/fonts/fontawesome-webfont.ttf
399
462
  - lib/splash/webadmin/portal/public/fonts/fontawesome-webfont.woff
@@ -406,12 +469,14 @@ files:
406
469
  - lib/splash/webadmin/portal/views/home.slim
407
470
  - lib/splash/webadmin/portal/views/layout.slim
408
471
  - lib/splash/webadmin/portal/views/logs.slim
472
+ - lib/splash/webadmin/portal/views/logs_form.slim
409
473
  - lib/splash/webadmin/portal/views/nav.slim
410
474
  - lib/splash/webadmin/portal/views/not_found.slim
411
475
  - lib/splash/webadmin/portal/views/processes.slim
412
476
  - lib/splash/webadmin/portal/views/proxy.slim
413
477
  - lib/splash/webadmin/portal/views/restclient.slim
414
478
  - lib/splash/webadmin/portal/views/restclient_result.slim
479
+ - lib/splash/webadmin/portal/views/sequences.slim
415
480
  - prometheus-splash.gemspec
416
481
  - spec/helpers_spec.rb
417
482
  - spec/templates_spec.rb