my_nagios 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec8c487c0c3cf38896a3090c27cf4ff668246de0
4
- data.tar.gz: c9e53b05b8aa887e861e7ce57f409941a1750826
3
+ metadata.gz: 358b8883d69c7d489a7662a3da495907efc3dae3
4
+ data.tar.gz: a7f10106f444595ad53b5e0efdb1fc8af7ac3881
5
5
  SHA512:
6
- metadata.gz: e1e0c2013b497d7b4061a567a662d4874c0c934b128b38b551954d81e58fed1c57e50c698942fdf1f84ac34ac2ee8e6d1b8b424e07c19fc56a4a46438c912f23
7
- data.tar.gz: ad8bf7f49fc081df3f25899a366dc18c505244295cb1af8d8f8185b6929e1c2a19112b3d24f097134ec0b10834a65c1d99510ede5d5b0ed169971c4727f07af1
6
+ metadata.gz: 2d23398061c02968b1428b60357c3a16eeded5e1f8c5f4ae46c199a717a7408387ac6ee09ebde7c25bc9511591fac7dba2dc8b6c76930761ff77e001c5031880
7
+ data.tar.gz: 4998de0dbefbba5d6cb4f5c220ea7009b54a40763051b8d4d90b6da53e17a5ff60432116791940884fe7f38698b2d9df0115f2a9ed310560da6e1ea3f146b33e
@@ -4,8 +4,6 @@ $ ->
4
4
  $('.check_now').click (event) ->
5
5
  onclick_check_now(event)
6
6
 
7
-
8
-
9
- onclick_check_now = (event) ->
7
+ @onclick_check_now = (event) ->
10
8
  $(event.target).closest('tr').addClass('updating')
11
9
  $(event.target).closest('tr').find('img.spinner').show()
@@ -0,0 +1,25 @@
1
+ $ ->
2
+ refresh_rate = 15000
3
+
4
+ setInterval () ->
5
+ $('table.failures_list').addClass('refresing')
6
+ show_timer(refresh_rate)
7
+
8
+ $.ajax
9
+ url: '/autorefresh'
10
+ type: "POST"
11
+ dataType: "script"
12
+ , refresh_rate
13
+
14
+ show_timer = (counter) ->
15
+ counter = (counter / 1000) % 60
16
+
17
+ interval = setInterval () ->
18
+ counter -= 1
19
+
20
+ clearInterval(interval) if counter == 0
21
+
22
+ $('#failures_list .timer').html(counter)
23
+ , 1000
24
+
25
+ $(document).ready(show_timer(refresh_rate))
@@ -8,4 +8,24 @@
8
8
  * {
9
9
  font-size: 0.9em;
10
10
  }
11
+
12
+ #failures_list {
13
+ position: relative;
14
+
15
+ .timer {
16
+ position: absolute;
17
+ top: 8px;
18
+ right: 8px;
19
+ }
20
+
21
+ table.failures_list.refresing {
22
+ color: #e6e6e6;
23
+ }
24
+ }
25
+
26
+ table.check_list {
27
+ tr.disabled {
28
+ background-color: #e6e6e6;
29
+ }
30
+ }
11
31
  }
@@ -2,6 +2,8 @@ require_dependency "my_nagios/application_controller"
2
2
 
3
3
  module MyNagios
4
4
  class ChecksController < ApplicationController
5
+ before_filter :find_check, only: [:run_now, :toggle, :edit, :create, :update]
6
+
5
7
  def new
6
8
  @check = Check.new
7
9
  end
@@ -11,10 +13,15 @@ module MyNagios
11
13
  redirect_to root_path
12
14
  end
13
15
 
14
- def run_now
15
- @check = Check.find(params[:id])
16
- return unless @check
16
+ def edit
17
+ end
17
18
 
19
+ def update
20
+ @check.update(params_check)
21
+ redirect_to root_path
22
+ end
23
+
24
+ def run_now
18
25
  @check.run!
19
26
 
20
27
  respond_to do |format|
@@ -22,8 +29,20 @@ module MyNagios
22
29
  end
23
30
  end
24
31
 
32
+ def toggle
33
+ @check.toggle! :enabled
34
+
35
+ respond_to do |format|
36
+ format.js { render layout: false }
37
+ end
38
+ end
39
+
25
40
  private
26
41
 
42
+ def find_check
43
+ @check = Check.find(params[:id])
44
+ end
45
+
27
46
  def params_check
28
47
  params.require(:check).permit(:host, :user, :pem_key, :description, :interval, :command)
29
48
  end
@@ -3,9 +3,22 @@ require_dependency "my_nagios/application_controller"
3
3
  module MyNagios
4
4
  class WelcomeController < ApplicationController
5
5
 
6
+ before_filter :find_criticals, only: [:index, :autorefresh]
7
+
6
8
  def index
7
- @group = Group.all.includes(:checks)
8
- @criticals = Check.where(status: Check.statuses[:critical])
9
+ @group = Group.all.includes(:checks)
10
+ end
11
+
12
+ def autorefresh
13
+ respond_to do |format|
14
+ format.js { render layout: false }
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def find_criticals
21
+ @criticals = Check.enabled.where(status: Check.statuses[:critical])
9
22
  end
10
23
 
11
24
  end
@@ -5,6 +5,8 @@ module MyNagios
5
5
  enum status: [ :info, :success, :critical ]
6
6
  enum state: [ :completed, :running ]
7
7
 
8
+ scope :enabled, -> { where(enabled: true) }
9
+
8
10
  def run!
9
11
  begin
10
12
  self.update(state: :running)
@@ -1,7 +1,7 @@
1
1
  !!! 5
2
2
  %html
3
3
  %head
4
- %title Forum
4
+ %title MyNagios
5
5
  = stylesheet_link_tag 'my_nagios/application', media: 'all'
6
6
  = javascript_include_tag 'my_nagios/application'
7
7
  = csrf_meta_tag
@@ -1,7 +1,7 @@
1
1
  - run_now ||= false
2
2
  - show_group ||= false
3
3
 
4
- %tr{ id: dom_id(check) }
4
+ %tr{ id: dom_id(check), class: (check.enabled? ? 'enabled' : 'disabled') }
5
5
  - if show_group
6
6
  %td
7
7
  %strong=check.group.name
@@ -19,5 +19,10 @@
19
19
 
20
20
  - if run_now
21
21
  %td
22
- =link_to 'run now', run_now_check_path(check), class: 'check_now', method: :post, remote: true
23
- =image_tag 'my_nagios/chasing_arrows.gif', class: 'spinner'
22
+ #check_now
23
+ =link_to 'run now', run_now_check_path(check), class: 'check_now', method: :post, remote: true
24
+ =image_tag 'my_nagios/chasing_arrows.gif', class: 'spinner'
25
+ #actions
26
+ %br
27
+ =link_to 'edit', edit_check_path(check)
28
+ =link_to (check.enabled? ? 'disable' : 'enable' ), toggle_check_path(check), class: 'disable_check', method: :post, data: { remote: true, confirm: 'Are you sure?' }
@@ -0,0 +1,24 @@
1
+ =form_for @check do |f|
2
+ =f.label :group
3
+ =f.select :group, options_for_select( MyNagios::Group.all.map{|g| [g.name, g.id]} )
4
+ %br
5
+ =f.label :host
6
+ =f.text_field :host
7
+ %br
8
+ =f.label :user
9
+ =f.text_field :user
10
+ %br
11
+ =f.label :pem_key
12
+ =f.text_field :pem_key
13
+ %br
14
+ =f.label :description
15
+ =f.text_field :description
16
+ %br
17
+ =f.label :interval
18
+ =f.text_field :interval
19
+ %br
20
+ =f.label :command
21
+ =f.text_field :command
22
+ %br
23
+
24
+ =f.submit
@@ -0,0 +1,3 @@
1
+ Edit check
2
+
3
+ = render partial: 'form'
@@ -1,26 +1,3 @@
1
1
  Add new check
2
2
 
3
- =form_for @check do |f|
4
- =f.label :group
5
- =f.select :group, options_for_select( MyNagios::Group.all.map{|g| [g.name, g.id]} )
6
- %br
7
- =f.label :host
8
- =f.text_field :host
9
- %br
10
- =f.label :user
11
- =f.text_field :user
12
- %br
13
- =f.label :pem_key
14
- =f.text_field :pem_key
15
- %br
16
- =f.label :description
17
- =f.text_field :description
18
- %br
19
- =f.label :interval
20
- =f.text_field :interval
21
- %br
22
- =f.label :command
23
- =f.text_field :command
24
- %br
25
-
26
- =f.submit
3
+ = render partial: 'form'
@@ -5,8 +5,4 @@ tr = '<%= dom_id(@check) %>'
5
5
  $('#' + tr).find('img.spinner').hide()
6
6
 
7
7
  $('#' + tr).find('a.check_now').click (event) ->
8
- onclick_check_now(event)
9
-
10
- onclick_check_now = (event) ->
11
- $(event.target).closest('tr').addClass('updating')
12
- $(event.target).closest('tr').find('img.spinner').show()
8
+ onclick_check_now(event)
@@ -0,0 +1,7 @@
1
+ tr = '<%= dom_id(@check) %>'
2
+ $('#' + tr).replaceWith('<%= j render(partial: '/my_nagios/checks/check_row', locals: { check: @check, run_now: true }) %>')
3
+
4
+ $('img.spinner').hide()
5
+
6
+ $('.check_now').click (event) ->
7
+ onclick_check_now(event)
@@ -0,0 +1,16 @@
1
+ #failures_list
2
+ .timer
3
+ %h3 Critical errors:
4
+
5
+ - if @criticals.blank?
6
+ %p No criticals
7
+ - else
8
+
9
+ %table.table.failures_list
10
+ %colgroup
11
+ %col{ width: '10%'}
12
+ %col{ width: '80%'}
13
+ %col{ width: '5%'}
14
+ %col{ width: '5%'}
15
+ - criticals.each do |check|
16
+ = render partial: '/my_nagios/checks/check_row', locals: { check: check, show_group: true }
@@ -0,0 +1 @@
1
+ $('#failures_list').replaceWith('<%= j render(partial: '/my_nagios/welcome/failures_list', locals: { criticals: @criticals, show_group: true }) %>')
@@ -1,24 +1,13 @@
1
1
  =link_to 'Add new check', new_check_path
2
2
 
3
- %h3 Critical errors:
4
- - if @criticals.blank?
5
- %p No criticals
6
- - else
7
- %table.table
8
- %colgroup
9
- %col{ width: '10%'}
10
- %col{ width: '80%'}
11
- %col{ width: '5%'}
12
- %col{ width: '5%'}
13
- - @criticals.each do |check|
14
- = render partial: '/my_nagios/checks/check_row', locals: { check: check, show_group: true }
3
+ = render partial: 'failures_list', locals: { criticals: @criticals, show_group: true }
15
4
 
16
5
  #checks{ data: :no_turbolink }
17
6
  - @group.each do |group|
18
7
 
19
8
  %h3=group.name
20
9
 
21
- %table.table
10
+ %table.table.check_list
22
11
  %colgroup
23
12
  %col{ width: '10%'}
24
13
  %col{ width: '80%'}
data/config/routes.rb CHANGED
@@ -3,9 +3,12 @@ MyNagios::Engine.routes.draw do
3
3
  mount Sidekiq::Web, at: '/sidekiq'
4
4
 
5
5
  root 'welcome#index'
6
+ match 'autorefresh', to: 'welcome#autorefresh', via: [:post]
7
+
6
8
  resources :checks do
7
9
  member do
8
10
  post :run_now
11
+ post :toggle
9
12
  end
10
13
  end
11
14
  end
@@ -1,3 +1,3 @@
1
1
  module MyNagios
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_nagios
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaly Omelchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-06 00:00:00.000000000 Z
11
+ date: 2016-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -179,8 +179,13 @@ files:
179
179
  - app/models/my_nagios/group.rb
180
180
  - app/views/layouts/my_nagios/application.haml
181
181
  - app/views/my_nagios/checks/_check_row.haml
182
+ - app/views/my_nagios/checks/_form.haml
183
+ - app/views/my_nagios/checks/edit.haml
182
184
  - app/views/my_nagios/checks/new.haml
183
185
  - app/views/my_nagios/checks/run_now.js.coffee
186
+ - app/views/my_nagios/checks/toggle.js.coffee
187
+ - app/views/my_nagios/welcome/_failures_list.haml
188
+ - app/views/my_nagios/welcome/autorefresh.coffee
184
189
  - app/views/my_nagios/welcome/index.haml
185
190
  - config/initializers/sidekiq.rb
186
191
  - config/routes.rb