prometheus-splash 0.6.0 → 0.8.2

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 +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,28 @@
1
+
2
+
3
+
4
+
5
+ WebAdminApp.get '/api/sequences/list.?:format?' do
6
+ log = get_logger
7
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
8
+ log.call "API : sequences, verb : GET, route : list, format : #{format}"
9
+ obj = splash_return case: :quiet_exit, :more => "Sequences list"
10
+ obj[:data] = get_config.sequences
11
+ content_type format
12
+ format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
13
+ end
14
+
15
+ WebAdminApp.get '/api/sequences/show/:name.?:format?' do
16
+ log = get_logger
17
+ format = (params[:format])? format_by_extensions(params[:format]) : format_by_extensions('json')
18
+ log.call "API : sequences, verb : GET, route : show, item : #{params[:name]} , format : #{format}"
19
+ sequences_recordset = get_config.sequences[params[:name].to_sym]
20
+ unless sequences_recordset.nil? then
21
+ obj = splash_return case: :quiet_exit
22
+ obj[:data] = sequences_recordset
23
+ else
24
+ obj = splash_return case: :not_found, :more => "Sequence not configured"
25
+ end
26
+ content_type format
27
+ format_response(obj, (params[:format])? format_by_extensions(params[:format]): request.accept.first)
28
+ end
@@ -6,13 +6,14 @@ class WebAdminApp < Sinatra::Base
6
6
  include Splash::Helpers
7
7
  include Splash::Exiter
8
8
  include Splash::Loggers
9
+ include Splash::Daemon::Controller
9
10
 
10
11
  set :server, 'thin'
11
12
  set :port, get_config.webadmin_port
12
13
  set :bind, get_config.webadmin_ip
13
14
  set :static, :enable
14
- set :public_folder, 'lib/splash/webadmin/portal/public'
15
- set :views, "lib/splash/webadmin/portal/views"
15
+ set :public_folder, search_file_in_gem("prometheus-splash", 'lib/splash/webadmin/portal/public')
16
+ set :views, search_file_in_gem("prometheus-splash", "lib/splash/webadmin/portal/views")
16
17
 
17
18
  before do
18
19
  rehash_config
@@ -1,5 +1,7 @@
1
1
  WebAdminApp.get '/commands' do
2
2
  get_menu 2
3
+ log = get_logger
4
+ log.call "WEB : commands, verb : GET, controller : /commands"
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/commands/list.yml"
4
6
  raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(raw)[:data]
@@ -1,5 +1,7 @@
1
1
  WebAdminApp.get '/documentation' do
2
- get_menu 5
2
+ get_menu 6
3
+ log = get_logger
4
+ log.call "WEB : documentation, verb : GET, controller : /documentation"
3
5
  filename = search_file_in_gem("prometheus-splash","README.md")
4
6
  @data = Kramdown::Document.new(File::readlines(filename).join).to_html
5
7
  slim :documentation, :format => :html
@@ -1,12 +1,36 @@
1
1
  WebAdminApp.get '/' do
2
+ log = get_logger
3
+ log.call "WEB : BASE, verb : GET, controller : /"
2
4
  get_menu -1
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/config/full.yml"
4
6
  @raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(@raw)[:data]
8
+ @status = get_processes({ :pattern => get_config.daemon_process_name}).empty?
6
9
  slim :home, :format => :html
7
10
  end
8
11
 
9
12
  WebAdminApp.get '/home' do
10
13
  get_menu 0
14
+ log = get_logger
15
+ log.call "WEB : home, verb : GET, controller : /home"
11
16
  slim :home, :format => :html
12
17
  end
18
+
19
+ WebAdminApp.get '/daemon/:action' do
20
+ content_type :text
21
+ log = get_logger
22
+ log.call "WEB : daemon, verb : GET, controller : /daemon/:action"
23
+ case params[:action]
24
+ when 'start'
25
+ startdaemon scheduling: true, purge: false
26
+ return 'start'
27
+ when 'stop'
28
+ stopdaemon
29
+ return 'stop'
30
+ when 'restart'
31
+ stopdaemon
32
+ startdaemon scheduling: true, purge: false
33
+ return 'start'
34
+ else
35
+ end
36
+ end
@@ -1,5 +1,7 @@
1
- WebAdminApp.get '/logs' do
1
+ WebAdminApp.get '/logs/?:status?/?:label?' do
2
2
  get_menu 0
3
+ log = get_logger
4
+ log.call "WEB : logs, verb : GET, controller : /logs/?:status?/?:label?"
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/logs/list.yml"
4
6
  raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(raw)[:data]
@@ -7,8 +9,49 @@ WebAdminApp.get '/logs' do
7
9
  raw = RestClient::Request.execute(method: 'POST', url: url,timeout: 10)
8
10
  prov = YAML::load(raw)[:data]
9
11
  @result = {}
12
+ @log_failed = params[:label] if params[:status] == 'failure'
13
+ @log_saved = params[:label] if params[:status] == 'success'
10
14
  prov.each {|item|
11
15
  @result[item[:label]] = item
12
16
  }
13
17
  slim :logs, :format => :html
14
18
  end
19
+
20
+
21
+ WebAdminApp.get '/add_modify_log/?:label?' do
22
+ get_menu 0
23
+ log = get_logger
24
+ log.call "WEB : logs, verb : POST, controller : /add_modify_log/?:label?"
25
+ @data = {}
26
+ if params[:label] then
27
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/logs/show/#{params[:label].to_s}.yml"
28
+ raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
29
+ res = YAML::load(raw)
30
+ @data = res[:data] if res[:status] == :success
31
+ @data[:old_label] = params[:label].to_s
32
+ end
33
+ slim :logs_form, :format => :html
34
+ end
35
+
36
+
37
+ WebAdminApp.post '/save_log' do
38
+ get_menu 0
39
+ log = get_logger
40
+ log.call "WEB : logs, verb : POST, controller : /save_log/?:label?"
41
+ data = {}
42
+ data[:log] = params[:log]
43
+ data[:pattern] = params[:pattern]
44
+ data[:label] = params[:label].to_sym
45
+ if params[:update] then
46
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/config/deletelog/#{params[:old_label]}"
47
+ raw = RestClient::Request.execute(method: 'DELETE', url: url,timeout: 10)
48
+ end
49
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/config/addlog.yml"
50
+ raw = RestClient::Request.execute(method: 'POST', url: url,timeout: 10, payload: data.to_yaml)
51
+ res = YAML::load(raw)
52
+ if res[:status] == :success then
53
+ redirect "/logs/success/#{params[:label].to_s}"
54
+ else
55
+ redirect "/logs/failure/#{params[:label].to_s}"
56
+ end
57
+ end
@@ -1,5 +1,7 @@
1
1
  WebAdminApp.get '/processes' do
2
2
  get_menu 1
3
+ log = get_logger
4
+ log.call "WEB : processes, verb : GET, controller : /processes"
3
5
  url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/process/list.yml"
4
6
  raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
5
7
  @data = YAML::load(raw)[:data]
@@ -1,30 +1,37 @@
1
1
 
2
2
 
3
3
  WebAdminApp.use Rack::ReverseProxy do
4
- config = get_config
5
- url = "http://#{config.prometheus_pushgateway_host}:#{config.prometheus_pushgateway_port}/#{config.prometheus_pushgateway_path}"
6
- reverse_proxy /^\/pushgateway\/?(.*)$/, url
4
+ reverse_proxy /^\/pushgateway\/?(.*)$/, get_config.prometheus_pushgateway_url + '/'
7
5
  reverse_proxy_options preserve_host: true
8
6
  end
9
7
 
10
8
 
11
9
  WebAdminApp.use Rack::ReverseProxy do
12
- reverse_proxy /^\/prometheus\/?(.*)$/, get_config.prometheus_url
10
+ reverse_proxy /^\/prometheus\/?(.*)$/, get_config.prometheus_url + '/'
13
11
  reverse_proxy_options preserve_host: true
14
12
  end
15
13
 
16
- WebAdminApp.get '/proxy/links' do
17
- get_menu 4
18
14
 
15
+ WebAdminApp.use Rack::ReverseProxy do
16
+ reverse_proxy /^\/alertmanager\/?(.*)$/, get_config.prometheus_alertmanager_url + '/'
17
+ reverse_proxy_options preserve_host: true
18
+ end
19
+
20
+ WebAdminApp.get '/proxy/links' do
21
+ get_menu 5
22
+ log = get_logger
23
+ log.call "WEB : proxy, verb : GET, controller : /proxy/links"
19
24
  config = get_config
20
25
  if config.webadmin_proxy == true then
21
26
  @proxy = true
22
27
  @pushgateway_url = "http://#{config.webadmin_ip}:#{config.webadmin_port}/pushgateway"
23
28
  @prometheus_url = "http://#{config.webadmin_ip}:#{config.webadmin_port}/prometheus"
29
+ @alertmanager_url = "http://#{config.webadmin_ip}:#{config.webadmin_port}/prometheus"
24
30
  else
25
31
  @proxy = false
26
- @pushgateway_url = "http://#{config.prometheus_pushgateway_host}:#{config.prometheus_pushgateway_port}/#{config.prometheus_pushgateway_path}"
27
- @prometheus_url = "http://#{config.prometheus_url}"
32
+ @pushgateway_url = "#{config.prometheus_pushgateway_url}"
33
+ @alertmanager_url = "#{config.prometheus_alertmanager_url}"
34
+ @prometheus_url = "#{config.prometheus_url}"
28
35
  end
29
36
  slim :proxy, :format => :html
30
37
  end
@@ -1,14 +1,19 @@
1
1
  WebAdminApp.get '/restclient' do
2
- get_menu 3
2
+ log = get_logger
3
+ log.call "WEB : restclient, verb : GET, controller : /restclient"
4
+ get_menu 4
3
5
  slim :restclient, :format => :html
4
6
  end
5
7
 
6
8
  WebAdminApp.post '/restclient/query' do
9
+ log = get_logger
10
+ log.call "WEB : processes, verb : GET, controller : /restclient/query"
7
11
  @method = params[:method]
8
12
  @url = params[:url]
13
+ @body = params[:body]
9
14
  @notfound = false
10
15
  begin
11
- @result = RestClient::Request.execute(method: @method.to_sym, url: @url,timeout: 10)
16
+ @result = RestClient::Request.execute(method: @method.to_sym, url: @url,timeout: 10, payload: @body)
12
17
  rescue SocketError
13
18
  @result = false
14
19
  rescue RestClient::NotFound => e
@@ -0,0 +1,9 @@
1
+ WebAdminApp.get '/sequences' do
2
+ get_menu 3
3
+ log = get_logger
4
+ log.call "WEB : sequences, verb : GET, controller : /sequences"
5
+ url = "http://#{get_config.webadmin_ip}:#{get_config.webadmin_port}/api/sequences/list.yml"
6
+ raw = RestClient::Request.execute(method: 'GET', url: url,timeout: 10)
7
+ @data = YAML::load(raw)[:data]
8
+ slim :sequences, :format => :html
9
+ end
@@ -4,8 +4,8 @@ Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file unless
4
4
  Slim::Engine.set_options pretty: true
5
5
 
6
6
  def get_menu(current)
7
- @menu = ['Logs','Processes','Commands','RestCLIENT','Proxy/Links','Documentation']
8
- @menu_icons = {'Logs' => "file-text",'Processes' => "cogs",'Commands' => 'play-circle-o','RestCLIENT' => "server",'Proxy/Links' => 'random','Documetation' => 'medkit'}
7
+ @menu = ['Logs','Processes','Commands','Sequences','RestCLIENT','Proxy/Links','Documentation']
8
+ @menu_icons = {'Logs' => "file-text",'Processes' => "cogs",'Commands' => 'play-circle-o','Sequences' => "cubes",'RestCLIENT' => "server",'Proxy/Links' => 'random','Documetation' => 'medkit'}
9
9
  @current_item = nil
10
10
  @current_item = @menu[current] unless current == -1
11
11
  end
@@ -10,7 +10,13 @@
10
10
  height: 7em;
11
11
  }
12
12
 
13
+ h2 {
14
+ color: green;
15
+ }
13
16
 
17
+ .error {
18
+ color: red;
19
+ }
14
20
 
15
21
  .wrapper {
16
22
  overflow-y:scroll;
@@ -1,4 +1,4 @@
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
2
 
3
3
  div.uk-width-medium-1-1
4
4
  div.uk-panel.uk-panel-box
@@ -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}"
@@ -1,12 +1,58 @@
1
- h2 This is Splash
2
- p Choose a activity in the main menu
1
+ javascript:
2
+
3
+
4
+
5
+ $('body').on( 'click','button', function(){
6
+ var tmp = this.id
7
+ $("#stop").prop('disabled', true);
8
+ $("#start").prop('disabled', true);
9
+ var url = "/daemon/" + tmp;
10
+ $("#stop").prop('disabled', true);
11
+ $("#start").prop('disabled', true);
12
+ $.get(url, function( data ) {
13
+
14
+ console.log(data);
15
+ if (data == 'stop') {
16
+ $("#stop").prop('disabled', true);
17
+ $("#start").prop('disabled', false);
18
+ $("#daemon").removeClass('uk-badge-success').addClass('uk-badge-danger');
19
+ $("#daemon").text('OFF');
20
+ }
21
+ if (data == 'start') {
22
+ $("#stop").prop('disabled', false);
23
+ $("#start").prop('disabled', true);
24
+ $("#daemon").removeClass('uk-badge-danger').addClass('uk-badge-success');
25
+ $("#daemon").text('ON');
26
+ }
27
+ });
28
+ });
29
+
30
+ div.uk-grid
31
+ div.uk-width-medium-1-1
32
+ div.uk-panel.uk-panel-box
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
38
+ - if @status == false
39
+ button.uk-button(id="start" disabled): i.uk-icon-play
40
+ button.uk-button(id="stop"): i.uk-icon-stop
41
+ - else
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
3
50
 
4
51
 
5
52
  div.uk-grid
6
53
  div.uk-width-medium-1-2
7
54
  div.uk-panel.uk-panel-box
8
- span.uk-text-large.uk-text-bold Global Configuration
9
- br
55
+ span.uk-text-large.uk-text-bold.uk-text-success Global Configuration
10
56
  br
11
57
  span.uk-text-bold <i>Logger and display</i> :
12
58
  ul
@@ -21,8 +67,7 @@ div.uk-grid
21
67
 
22
68
  div.uk-width-medium-1-2
23
69
  div.uk-panel.uk-panel-box
24
- span.uk-text-large.uk-text-bold Transport and Backend
25
- br
70
+ span.uk-text-large.uk-text-bold.uk-text-success Transport and Backend
26
71
  br
27
72
  span.uk-text-bold <i>Backend</i> :
28
73
  ul
@@ -48,7 +93,7 @@ div.uk-grid
48
93
  div.uk-grid
49
94
  div.uk-width-medium-1-2
50
95
  div.uk-panel.uk-panel-box
51
- span.uk-text-large.uk-text-bold Daemon
96
+ span.uk-text-large.uk-text-bold.uk-text-success Daemon
52
97
  br
53
98
  ul
54
99
  li <b>Logs monitoring scheduling: </b> #{@data[:daemon_logmon_scheduling]}
@@ -64,8 +109,7 @@ div.uk-grid
64
109
 
65
110
  div.uk-width-medium-1-2
66
111
  div.uk-panel.uk-panel-box
67
- span.uk-text-large.uk-text-bold Web UI
68
- br
112
+ span.uk-text-large.uk-text-bold.uk-text-success Web UI
69
113
  br
70
114
  span.uk-text-bold <i>Webadmin</i> :
71
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
@@ -1,32 +1,79 @@
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
+ });
2
38
 
3
39
  div.uk-width-medium-1-1
4
40
  div.uk-panel.uk-panel-box
5
41
  span.uk-text-large.uk-text-bold List of logs monitored
6
42
  br
7
- table.uk-table.uk-table-hover.uk-table-striped
43
+ table#logrecords.uk-table.uk-table-hover.uk-table-striped
8
44
  thead
9
45
  tr
10
46
  th Log record label
11
47
  th Definition
12
48
  th Status
13
- tbody
14
- - @data.each do |log|
15
- tr
16
- td <b>Label</b> : #{log[:label]}
17
- td
49
+ th Actions
50
+ tbody
51
+ - @data.each do |log|
52
+ tr id="#{log[:label].to_s}"
53
+ td <b>Label</b> : #{log[:label]}
54
+ td
55
+ ul
56
+ li <b>File</b> : #{log[:log]}
57
+ li <b>Pattern</b> : #{log[:pattern]}
58
+ td
59
+ - if @result[log[:label]][:status] == :missing
60
+ div.uk-badge.uk-badge-warning missing
61
+ - if @result[log[:label]][:status] == :clean
62
+ div.uk-badge.uk-badge-success success
63
+ ul
64
+ li <b>Lines count</b> : #{@result[log[:label]][:lines]}
65
+ - if @result[log[:label]][:status] == :matched
66
+ div.uk-badge.uk-badge-danger matched
18
67
  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>
68
+ li <b>Lines count</b> : #{@result[log[:label]][:lines]}
69
+ li <b class="uk-text-danger">Matchs count : #{@result[log[:label]][:count]} </b>
70
+ td
71
+ input.delete-log.uk-button.uk-button-mini.uk-button-danger id="#{log[:label].to_s}" value="Delete"
72
+ br
73
+ 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}';"
74
+ br
75
+ input.history-log.uk-button.uk-button-mini.uk-button-primary id="#{log[:label].to_s}" value="History" onclick="location.href='/history/#{log[:label].to_s}';"
76
+ div.uk-align-right
77
+ form.uk-form.uk-form-horizontal#query action="/add_modify_log" method="GET"
78
+ div &nbsp;
79
+ input.add-log.uk-button type="submit" value="Add new log"