prometheus-splash 0.8.0 → 0.8.5

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 +47 -3
  3. data/README.md +400 -178
  4. data/config/splash.yml +28 -14
  5. data/lib/splash/backends.rb +7 -1
  6. data/lib/splash/backends/file.rb +1 -1
  7. data/lib/splash/cli/commands.rb +122 -37
  8. data/lib/splash/cli/config.rb +12 -1
  9. data/lib/splash/cli/daemon.rb +1 -1
  10. data/lib/splash/cli/logs.rb +144 -48
  11. data/lib/splash/cli/process.rb +145 -52
  12. data/lib/splash/cli/transfers.rb +10 -3
  13. data/lib/splash/commands.rb +115 -40
  14. data/lib/splash/config.rb +112 -29
  15. data/lib/splash/config/flush.rb +2 -2
  16. data/lib/splash/constants.rb +3 -4
  17. data/lib/splash/daemon/orchestrator.rb +6 -7
  18. data/lib/splash/daemon/orchestrator/grammar.rb +1 -1
  19. data/lib/splash/dependencies.rb +1 -0
  20. data/lib/splash/exiter.rb +1 -1
  21. data/lib/splash/helpers.rb +1 -1
  22. data/lib/splash/logs.rb +94 -16
  23. data/lib/splash/monkeys.rb +5 -0
  24. data/lib/splash/processes.rb +91 -16
  25. data/lib/splash/sequences.rb +6 -1
  26. data/lib/splash/transfers.rb +13 -8
  27. data/lib/splash/webadmin/api/routes/commands.rb +15 -3
  28. data/lib/splash/webadmin/api/routes/config.rb +140 -2
  29. data/lib/splash/webadmin/api/routes/logs.rb +32 -17
  30. data/lib/splash/webadmin/api/routes/process.rb +21 -9
  31. data/lib/splash/webadmin/api/routes/sequences.rb +2 -2
  32. data/lib/splash/webadmin/main.rb +15 -1
  33. data/lib/splash/webadmin/portal/controllers/commands.rb +101 -1
  34. data/lib/splash/webadmin/portal/controllers/documentation.rb +2 -0
  35. data/lib/splash/webadmin/portal/controllers/home.rb +6 -1
  36. data/lib/splash/webadmin/portal/controllers/logs.rb +71 -1
  37. data/lib/splash/webadmin/portal/controllers/processes.rb +75 -3
  38. data/lib/splash/webadmin/portal/controllers/proxy.rb +2 -1
  39. data/lib/splash/webadmin/portal/controllers/restclient.rb +6 -1
  40. data/lib/splash/webadmin/portal/controllers/sequences.rb +2 -0
  41. data/lib/splash/webadmin/portal/public/css/ultragreen.css +6 -0
  42. data/lib/splash/webadmin/portal/public/favicon.ico +0 -0
  43. data/lib/splash/webadmin/portal/views/command_form.slim +45 -0
  44. data/lib/splash/webadmin/portal/views/command_history.slim +27 -0
  45. data/lib/splash/webadmin/portal/views/commands.slim +70 -20
  46. data/lib/splash/webadmin/portal/views/documentation.slim +1 -1
  47. data/lib/splash/webadmin/portal/views/home.slim +19 -20
  48. data/lib/splash/webadmin/portal/views/layout.slim +2 -2
  49. data/lib/splash/webadmin/portal/views/log_form.slim +27 -0
  50. data/lib/splash/webadmin/portal/views/log_history.slim +24 -0
  51. data/lib/splash/webadmin/portal/views/logs.slim +95 -21
  52. data/lib/splash/webadmin/portal/views/nav.slim +1 -1
  53. data/lib/splash/webadmin/portal/views/not_found.slim +1 -1
  54. data/lib/splash/webadmin/portal/views/process_form.slim +24 -0
  55. data/lib/splash/webadmin/portal/views/process_history.slim +24 -0
  56. data/lib/splash/webadmin/portal/views/processes.slim +80 -7
  57. data/lib/splash/webadmin/portal/views/proxy.slim +2 -2
  58. data/lib/splash/webadmin/portal/views/restclient.slim +7 -4
  59. data/lib/splash/webadmin/portal/views/restclient_result.slim +24 -20
  60. data/lib/splash/webadmin/portal/views/sequences.slim +1 -1
  61. data/prometheus-splash.gemspec +4 -4
  62. data/ultragreen_roodi_coding_convention.yml +4 -4
  63. metadata +18 -10
@@ -1,14 +1,49 @@
1
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Commands configured in Splash
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Commands configured in Splash
2
+
3
+ - unless @log_saved.nil?
4
+ javascript:
5
+ UIkit.notify("Command definition #{@command_saved} saved", {status:'success'});
6
+ - unless @log_failed.nil?
7
+ javascript:
8
+ UIkit.notify("Command definition #{@command_saved} not saved", {status:'danger'});
9
+
10
+ javascript:
11
+ $(document).on( 'click','input.delete-command',function(){
12
+ var id = this.id;
13
+ var url = "/api/config/deletecommand/" + id + ".json";
14
+ UIkit.modal.confirm('Are you sure?', function(){
15
+ console.debug(url)
16
+ $.ajax({
17
+ url: url,
18
+ type: 'DELETE',
19
+ success: function( data ) {
20
+ console.debug(data)
21
+ if (data['status'] == 'success') {
22
+ $('div#commandrecords h3#' + id).remove();
23
+ $('div#commandrecords div#' + id).remove();
24
+ UIkit.notify("Deleting log for " + id + " done", {status:'success'});
25
+ }
26
+ else
27
+ {
28
+ UIkit.notify("Deleting log for " + id + " failed !", {status:'danger'});
29
+ }
30
+ },
31
+ error: function(e) {
32
+ UIkit.notify("Deleting log for " + id + " failed !", {status:'danger'});
33
+ }
34
+ });
35
+ });
36
+ });
2
37
 
3
38
  div.uk-width-medium-1-1
4
39
  div.uk-panel.uk-panel-box
5
40
  span.uk-text-large.uk-text-bold List of commands availables
6
41
  br
7
42
 
8
- div.uk-accordion(data-uk-accordion)
9
- - @data.each do |command,content|
10
- h3.uk-accordion-title <b>Name</b> : #{command}
11
- div.uk-accordion-content
43
+ div#commandrecords.uk-accordion(data-uk-accordion)
44
+ - @data.reverse.each do |command|
45
+ h3.uk-accordion-title id="#{command[:name].to_s}" <i class="uk-icon-play-circle-o"></i>&nbsp;<b>Name</b> : #{command[:name]}
46
+ div.uk-accordion-content id="#{command[:name].to_s} "
12
47
  table.uk-table.uk-table-hover.uk-table-striped
13
48
  thead
14
49
  tr
@@ -19,31 +54,46 @@ div.uk-width-medium-1-1
19
54
  td
20
55
  dl.uk-description-list-horizontal
21
56
  dt <i class="uk-icon-th-list"></i>&nbsp;Description
22
- dd #{content[:desc]}
23
- - if content[:command]
57
+ dd #{command[:desc]}
58
+ - if command[:command]
24
59
  dt <i class="uk-icon-cog"></i>&nbsp;Command Line
25
- dd #{content[:command]}
26
- - if content[:schedule]
60
+ - if command[:delegate_to]
61
+ dd.uk-text-danger #{command[:command]} <i>(ignored because delegate_to is set)</i>
62
+ - else
63
+ dd #{command[:command]}
64
+ - if command[:schedule]
27
65
  dt <i class="uk-icon-calendar"></i>&nbsp;Schedule
28
66
  dd
29
67
  <ul>
30
- <li> <b><i>Type</b></i> : #{content[:schedule].keys.first}</li>
31
- <li> <b><i>Value</b></i> : #{content[:schedule].values.first}</li>
68
+ <li> <b><i>Type</b></i> : #{command[:schedule].keys.first}</li>
69
+ <li> <b><i>Value</b></i> : #{command[:schedule].values.first}</li>
32
70
  </ul>
33
- - if content[:on_success]
71
+ - if command[:on_success]
34
72
  dt <i class="uk-icon-check"></i>&nbsp;Execute on success
35
- dd #{content[:on_success]}
36
- - if content[:on_failure]
73
+ dd #{command[:on_success]}
74
+ - if command[:on_failure]
37
75
  dt <i class="uk-icon-bolt"></i>&nbsp;Execute on failure
38
- dd #{content[:on_failure]}
39
- - if content[:user]
76
+ dd #{command[:on_failure]}
77
+ - if command[:user]
40
78
  dt <i class="uk-icon-user"></i>&nbsp;become user
41
- dd #{content[:user]}
42
- - if content[:delegate_to]
79
+ dd #{command[:user]}
80
+ - if command[:delegate_to]
43
81
  dt <i class="uk-icon-chevron-circle-right"></i>&nbsp;Remote delegation
44
82
  dd
45
83
  <ul>
46
- <li> <i><b>Host</b></i> : #{content[:delegate_to][:host]}</li>
47
- <li> <b><i>Remote Command</b></i> : #{content[:delegate_to][:remote_command]}</li>
84
+ <li> <i><b>Host</b></i> : #{command[:delegate_to][:host]}</li>
85
+ <li> <b><i>Remote Command</b></i> : #{command[:delegate_to][:remote_command]}</li>
48
86
  </ul>
87
+ - if command[:retention].class == Hash
88
+ dt <i class="uk-icon-calendar-minus-o"></i>&nbsp;History retention
89
+ dd #{command[:retention].flatten.reverse.join(' ')}
49
90
  td
91
+ input.delete-command.uk-button.uk-button-mini.uk-button-danger id="#{command[:name].to_s}" value="Delete"
92
+ br
93
+ input.modify-process.uk-button.uk-button-mini.uk-button-primary id="#{command[:name].to_s}" value="Modify" onclick="location.href='/add_modify_command/#{command[:name].to_s}';"
94
+ br
95
+ input.history-command.uk-button.uk-button-mini.uk-button-primary id="#{command[:name].to_s}" value="History" onclick="location.href='/get_command_history/#{command[:name].to_s}';"
96
+ div.uk-align-right
97
+ form.uk-form.uk-form-horizontal#query action="/add_modify_command" method="GET"
98
+ div &nbsp;
99
+ input.add-process.uk-button type="submit" value="Add new process"
@@ -1,3 +1,3 @@
1
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medkit "></i>&nbsp;&nbsp;Splash Documentation
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medkit "></i>&nbsp;&nbsp;Splash Documentation
2
2
  div
3
3
  == "#{@data}"
@@ -30,30 +30,29 @@ javascript:
30
30
  div.uk-grid
31
31
  div.uk-width-medium-1-1
32
32
  div.uk-panel.uk-panel-box
33
- div.uk-text-large.uk-text-bold <i class="uk-icon-cogs uk-icon-justify uk-icon-large"></i>&nbsp;&nbsp;Splash Daemon status
34
- table.uk-table
35
- tr
36
- td
37
- b Actions :
38
- div.uk-button-group
39
- - if @status == false
40
- button.uk-button(id="start" disabled): i.uk-icon-play
41
- button.uk-button(id="stop"): i.uk-icon-stop
42
- - else
43
- button.uk-button(id="start"): i.uk-icon-play
44
- button.uk-button(id="stop" disabled): i.uk-icon-stop
45
- td
46
- b Status :
33
+ div.uk-grid
34
+ div.uk-width-1-3.uk-text-large.uk-text-bold.uk-text-success <i class="uk-icon-cogs uk-icon-justify uk-icon-large"></i>&nbsp;&nbsp;Splash Daemon status
35
+ div.uk-width-1-3
36
+ b Actions :
37
+ div.uk-button-group
47
38
  - if @status == false
48
- div.uk-badge.uk-badge-success.uk-badge-notifications(id="daemon") ON
39
+ button.uk-button(id="start" disabled): i.uk-icon-play
40
+ button.uk-button(id="stop"): i.uk-icon-stop
49
41
  - else
50
- div.uk-badge.uk-badge-danger.uk-badge-notifications(id="daemon") OFF
42
+ button.uk-button(id="start"): i.uk-icon-play
43
+ button.uk-button(id="stop" disabled): i.uk-icon-stop
44
+ div.uk-width-1-3
45
+ b Status :
46
+ - if @status == false
47
+ div.uk-badge.uk-badge-success.uk-badge-notifications(id="daemon") ON
48
+ - else
49
+ div.uk-badge.uk-badge-danger.uk-badge-notifications(id="daemon") OFF
51
50
 
52
51
 
53
52
  div.uk-grid
54
53
  div.uk-width-medium-1-2
55
54
  div.uk-panel.uk-panel-box
56
- span.uk-text-large.uk-text-bold Global Configuration
55
+ span.uk-text-large.uk-text-bold.uk-text-success Global Configuration
57
56
  br
58
57
  span.uk-text-bold <i>Logger and display</i> :
59
58
  ul
@@ -68,7 +67,7 @@ div.uk-grid
68
67
 
69
68
  div.uk-width-medium-1-2
70
69
  div.uk-panel.uk-panel-box
71
- span.uk-text-large.uk-text-bold Transport and Backend
70
+ span.uk-text-large.uk-text-bold.uk-text-success Transport and Backend
72
71
  br
73
72
  span.uk-text-bold <i>Backend</i> :
74
73
  ul
@@ -94,7 +93,7 @@ div.uk-grid
94
93
  div.uk-grid
95
94
  div.uk-width-medium-1-2
96
95
  div.uk-panel.uk-panel-box
97
- span.uk-text-large.uk-text-bold Daemon
96
+ span.uk-text-large.uk-text-bold.uk-text-success Daemon
98
97
  br
99
98
  ul
100
99
  li <b>Logs monitoring scheduling: </b> #{@data[:daemon_logmon_scheduling]}
@@ -110,7 +109,7 @@ div.uk-grid
110
109
 
111
110
  div.uk-width-medium-1-2
112
111
  div.uk-panel.uk-panel-box
113
- span.uk-text-large.uk-text-bold Web UI
112
+ span.uk-text-large.uk-text-bold.uk-text-success Web UI
114
113
  br
115
114
  span.uk-text-bold <i>Webadmin</i> :
116
115
  ul
@@ -11,8 +11,7 @@ html lang="fr-fr" dir="ltr"
11
11
  link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/css/uikit.gradient.min.css" integrity="sha512-Vjr6Vz5D/gNvTBfQW581ssADQr1j8fAOU0seE2SxO8UvsCBZBoFQS9Lec3hkmZbpcYnsifkBtdQaHU4x6MylGw==" crossorigin="anonymous"
12
12
  link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/css/components/sticky.gradient.css" integrity="sha512-BY0A+4FEGeikNxmo9Q30BZMGRDykKHScJlOSeGq0uq+ylGDJD3zAApnktyKv9tzira1p0ow+B7VqIlRR2CBWoA==" crossorigin="anonymous"
13
13
  link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/css/components/accordion.gradient.min.css" integrity="sha512-Cfd5PRktfT5WA1yUJbYkzjEHvT+9KzqPP1Z1OJud3CFUrkoAc6iIWawoMqPFmtvmxxDNV5RAHfe5DCISV+Gd9A==" crossorigin="anonymous"
14
-
15
-
14
+ link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/css/components/notify.gradient.min.css" integrity="sha512-HOJctZ/0ww0jFHLHNlNODVEwKf1QxiDKyt3TQZRYZl7e7QSi6whfokIvuMJRoUwykB1SXW4eBeK6MecW4TWFFA==" crossorigin="anonymous"
16
15
 
17
16
  link rel="stylesheet" href="/css/ultragreen.css"
18
17
 
@@ -20,6 +19,7 @@ html lang="fr-fr" dir="ltr"
20
19
  script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/js/uikit.min.js" integrity="sha512-KI08ZutCgdasDMwp5rPKd9nF8r+eAy/bZH3Rjova6HfkDv1W7J72sNW+K++KvMp3HL7z0cCykV9vixJACHeCew==" crossorigin="anonymous"
21
20
  script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/js/components/sticky.min.js" integrity="sha512-B21PoHN5PsI7sU3cUcNbitUsXp6Zzp81ZDlKJr1xRXwEh3WSftRmgSOgRYxB8h/SlgW+jazkmOXerT33NB7jGA==" crossorigin="anonymous"
22
21
  script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/js/components/accordion.min.js" integrity="sha512-7UmYoHJ9tTZiNqlBuUgnr2l82TmZxhiOVXIjiMVP/hPFQJopjEBfVEFPjNdv97OX8K/FIZ4kAXSE+SRTfUkPMg==" crossorigin="anonymous"
22
+ script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.5/js/components/notify.min.js" integrity="sha512-gaUF+WYo5jZ2OjLCBfhz+4NAtt0YHDtcxulSv6/+1xDP9QysfsqljFadHN6sWkLvyXzKtQ7efofABRJfWOVwtw==" crossorigin="anonymous"
23
23
 
24
24
 
25
25
  body
@@ -0,0 +1,27 @@
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
+ label.uk-form-label for="retention" Retention (Like "2 hours, 2 days")
19
+ <input class="uk-form-width-large" id="retention" type="text" placeholder="retention" name="retention" value="#{@data[:retention]}">
20
+ div &nbsp;
21
+ - unless @data.empty?
22
+ input type="hidden" name="update" value="true"
23
+ input type="hidden" name="old_label" value="#{@data[:old_label].to_s}"
24
+ div.uk-align-right
25
+ input.uk-button.uk-button-small-primary type="submit" value="Submit"
26
+ javascript:
27
+ $("#query").validate();
@@ -0,0 +1,24 @@
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;History for log #{@label} monitoring
2
+
3
+
4
+ -
5
+ div.uk-width-medium-1-1
6
+ div.uk-panel.uk-panel-box
7
+ span.uk-text-large.uk-text-bold List of records
8
+ br
9
+ table#logrecords.uk-table.uk-table-hover.uk-table-striped
10
+ thead
11
+ tr
12
+ th Date
13
+ th File
14
+ th Status
15
+ th Nb Errors
16
+ th Full Nb of lines
17
+ tbody
18
+ - @data.reverse.each do |key|
19
+ tr class="#{(key[key.keys.first][:status] == :clean)? 'uk-text-success' : 'uk-text-danger'}"
20
+ td #{key.keys.first}
21
+ td #{key[key.keys.first][:file]}
22
+ td #{key[key.keys.first][:status]}
23
+ td #{key[key.keys.first][:errors]}
24
+ td #{key[key.keys.first][:lines]}
@@ -1,32 +1,106 @@
1
- h2 <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Logs configured in Splash
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Logs configured in Splash
2
+
3
+
4
+ - unless @log_saved.nil?
5
+ javascript:
6
+ UIkit.notify("Log record #{@log_saved} saved", {status:'success'});
7
+ - unless @log_failed.nil?
8
+ javascript:
9
+ UIkit.notify("Log record #{@log_saved} not saved", {status:'danger'});
10
+
11
+
12
+ javascript:
13
+ $(document).on( 'click','input.delete-log',function(){
14
+ var id = this.id;
15
+ var url = "/api/config/deletelog/" + id + ".json";
16
+ UIkit.modal.confirm('Are you sure?', function(){
17
+ console.debug(url)
18
+ $.ajax({
19
+ url: url,
20
+ type: 'DELETE',
21
+ success: function( data ) {
22
+ console.debug(data)
23
+ if (data['status'] == 'success') {
24
+ $('table#logrecords tr#' + id).remove();
25
+ UIkit.notify("Deleting log for " + id + " done", {status:'success'});
26
+ }
27
+ else
28
+ {
29
+ UIkit.notify("Deleting log for " + id + " failed !", {status:'danger'});
30
+ }
31
+ },
32
+ error: function(e) {
33
+ UIkit.notify("Deleting log for " + id + " failed !", {status:'danger'});
34
+ }
35
+ });
36
+ });
37
+ });
38
+
39
+ $(document).on( 'click','input.monitor-log',function(){
40
+ var url = "/api/logs/monitor.json";
41
+ UIkit.modal.confirm('Are you sure?', function(){
42
+ console.debug(url)
43
+ $.ajax({
44
+ url: url,
45
+ type: 'POST',
46
+ success: function( data ) {
47
+ console.debug(data)
48
+ if (data['status'] == 'success') {
49
+ UIkit.notify("Forced monitoring done", {status:'success'});
50
+ }
51
+ else
52
+ {
53
+ UIkit.notify("Forced monitoring failed !", {status:'danger'});
54
+ }
55
+ },
56
+ error: function(e) {
57
+ UIkit.notify("Forced monitoring failed !", {status:'danger'});
58
+ }
59
+ });
60
+ });
61
+ });
2
62
 
3
63
  div.uk-width-medium-1-1
4
64
  div.uk-panel.uk-panel-box
5
65
  span.uk-text-large.uk-text-bold List of logs monitored
6
66
  br
7
- table.uk-table.uk-table-hover.uk-table-striped
67
+ table#logrecords.uk-table.uk-table-hover.uk-table-striped
8
68
  thead
9
69
  tr
10
70
  th Log record label
11
71
  th Definition
12
72
  th Status
13
- tbody
14
- - @data.each do |log|
15
- tr
16
- td <b>Label</b> : #{log[:label]}
17
- td
73
+ th Actions
74
+ tbody
75
+ - @data.each do |log|
76
+ tr id="#{log[:label].to_s}"
77
+ td <i class="uk-icon-tag"></i>&nbsp;<b>Label</b> : #{log[:label]}
78
+ td
79
+ ul
80
+ li <i class="uk-icon-file"></i>&nbsp;<b>File</b> : #{log[:log]}
81
+ li <i class="uk-icon-binoculars"></i>&nbsp;<b>Pattern</b> : #{log[:pattern]}
82
+ - if log[:retention].class == Hash
83
+ li <i class="uk-icon-calendar-minus-o"></i>&nbsp;<b>History retention</b> : #{log[:retention].flatten.reverse.join(' ')}
84
+ td
85
+ - if @result[log[:label]][:status] == :missing
86
+ div.uk-badge.uk-badge-warning missing
87
+ - if @result[log[:label]][:status] == :clean
88
+ div.uk-badge.uk-badge-success success
89
+ ul
90
+ li <i class="uk-icon-asterisk"></i>&nbsp;<b>Lines count</b> : #{@result[log[:label]][:lines]}
91
+ - if @result[log[:label]][:status] == :matched
92
+ div.uk-badge.uk-badge-danger matched
18
93
  ul
19
- li <b>File</b> : #{log[:log]}
20
- li <b>Pattern</b> : #{log[:pattern]}
21
- td
22
- - if @result[log[:label]][:status] == :missing
23
- div.uk-badge.uk-badge-warning missing
24
- - if @result[log[:label]][:status] == :clean
25
- div.uk-badge.uk-badge-success success
26
- ul
27
- li <b>Lines count</b> : #{@result[log[:label]][:lines]}
28
- - if @result[log[:label]][:status] == :matched
29
- div.uk-badge.uk-badge-danger matched
30
- ul
31
- li <b>Lines count</b> : #{@result[log[:label]][:lines]}
32
- li <b class="uk-text-danger">Matchs count : #{@result[log[:label]][:count]} </b>
94
+ li <i class="uk-icon-asterisk"></i>&nbsp;<b>Lines count</b> : #{@result[log[:label]][:lines]}
95
+ li <i class="uk-icon-bolt"></i>&nbsp;<b class="uk-text-danger">Matchs count : #{@result[log[:label]][:count]} </b>
96
+ td
97
+ input.delete-log.uk-button.uk-button-mini.uk-button-danger id="#{log[:label].to_s}" value="Delete"
98
+ br
99
+ input.modify-log.uk-button.uk-button-mini.uk-button-primary id="#{log[:label].to_s}" value="Modify" onclick="location.href='/add_modify_log/#{log[:label].to_s}';"
100
+ br
101
+ input.history-log.uk-button.uk-button-mini.uk-button-primary id="#{log[:label].to_s}" value="History" onclick="location.href='/get_log_history/#{log[:label].to_s}';"
102
+ div.uk-align-right
103
+ form.uk-form.uk-form-horizontal#query action="/add_modify_log" method="GET"
104
+ div &nbsp;
105
+ input.monitor-log.uk-button value="Force monitoring"&nbsp;
106
+ input.add-log.uk-button type="submit" value="Add new log"
@@ -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
@@ -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 process monitoring : #{@data[:process]}
3
+ - else
4
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;Add new Splash process 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_process" method="POST"
9
+ label.uk-form-label for="process" Process
10
+ <input class="uk-form-width-large" id="process" type="text" placeholder="process" name="process" value="#{@data[:process].to_s}" required>
11
+ div &nbsp;
12
+ label.uk-form-label for="patterns" Patterns (separator is "|")
13
+ <input class="uk-form-width-large" id="patterns" type="text" placeholder="patterns" name="patterns" value="#{@data[:patterns]}" required>
14
+ div &nbsp;
15
+ label.uk-form-label for="retention" Retention (Like "2 hours, 2 days")
16
+ <input class="uk-form-width-large" id="retention" type="text" placeholder="retention" name="retention" value="#{@data[:retention]}">
17
+ div &nbsp;
18
+ - unless @data.empty?
19
+ input type="hidden" name="update" value="true"
20
+ input type="hidden" name="old_process" value="#{@data[:old_process].to_s}"
21
+ div.uk-align-right
22
+ input.uk-button.uk-button-small-primary type="submit" value="Submit"
23
+ javascript:
24
+ $("#query").validate();
@@ -0,0 +1,24 @@
1
+ h2.uk-text-success <i class="uk-icon-#{@menu_icons[@current_item]} uk-icon-medium "></i>&nbsp;&nbsp;History for process #{@process} monitoring
2
+
3
+
4
+ -
5
+ div.uk-width-medium-1-1
6
+ div.uk-panel.uk-panel-box
7
+ span.uk-text-large.uk-text-bold List of records
8
+ br
9
+ table#logrecords.uk-table.uk-table-hover.uk-table-striped
10
+ thead
11
+ tr
12
+ th Date
13
+ th Process
14
+ th Status
15
+ th % CPU
16
+ th % MEM
17
+ tbody
18
+ - @data.reverse.each do |key|
19
+ tr class="#{(key[key.keys.first][:status] == :running)? 'uk-text-success' : 'uk-text-danger'}"
20
+ td #{key.keys.first}
21
+ td #{key[key.keys.first][:process]}
22
+ td #{key[key.keys.first][:status]}
23
+ td #{key[key.keys.first][:cpu_percent]}
24
+ td #{key[key.keys.first][:mem_percent]}