prometheus-splash 0.8.0 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
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]}