my_nagios 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e159c1af6b876084ddd20065a7a34457aaad958e
4
- data.tar.gz: c496c5b760f0e6c7e1b9e91051f36303a187c57e
3
+ metadata.gz: f9928548b5874bca05dd4fabc05972fde4a50913
4
+ data.tar.gz: f0c88b2b2c1e6651f7e95f4e5a12e48f7ffd6aea
5
5
  SHA512:
6
- metadata.gz: c61b31172b266832baee8a37b5c8d9b2d1cb140b0afa6c46902b643a315f39acfebf74c848e983d95dfc9f5f6e350d417a9a2d0632ee57874938ea8776643a6f
7
- data.tar.gz: bc6a133739fc68aa286d652cdab69e19dee1a22d66ce417c795eff33a09b263a181329e39c85be243abdfd1e9fd451df2d3fafaabbc42ebf06a9f5d644d9b476
6
+ metadata.gz: c0066bb8dcc6a7d74bb345907ec0682496fbf57f28e5aba5fc54bd354070e4e30829b5c97d53242df16e8510cbed168d308048069509bbd358dad4901b302890
7
+ data.tar.gz: 2dc32a663f977e82b0d94a79ed1568723fa3ac9692330f0789da385240330d5afaaf32449f93cb5e7a89379e23d17e7bd42e6f93cc89ca195b5ff4cb9fdd720f
@@ -1,9 +1,27 @@
1
1
  $ ->
2
2
  $('img.spinner').hide()
3
3
 
4
+ # Group Check Action
5
+ $('#group_action').hide()
6
+ $('#snooze_time_select').hide()
7
+
8
+ $('#check_group_action').change (event) ->
9
+ if $(this).val() == 'Snooze for' then $('#snooze_time_select').show() else $('#snooze_time_select').hide()
10
+
4
11
  $('.check_now').click (event) ->
5
12
  onclick_check_now(event)
6
13
 
14
+ $(':checkbox').change (event) ->
15
+ if $('input:checked').length > 0
16
+ $('#group_action').show();
17
+ selected_ids = $('input:checked').map () ->
18
+ return $(this).val()
19
+
20
+ $('#group_action_check_ids').val(selected_ids.get() + '')
21
+ else
22
+ $('#group_action').hide();
23
+
24
+
7
25
  @onclick_check_now = (event) ->
8
26
  $(event.target).closest('tr').addClass('updating')
9
27
  $(event.target).closest('tr').find('img.spinner').show()
@@ -16,4 +16,17 @@
16
16
  .spinner {
17
17
  width: 14px;
18
18
  }
19
+
20
+ .checkbox_holder {
21
+ padding-right: 8px;
22
+ }
23
+
24
+ td.snooze_for {
25
+ color: #e6e6e6;
26
+ }
27
+
28
+ .snooze_for {
29
+ font-weight: bold;
30
+ color: #31708f;
31
+ }
19
32
  }
@@ -38,6 +38,22 @@ module MyNagios
38
38
  end
39
39
  end
40
40
 
41
+ def group_action
42
+ check_ids = params["group_action_check_ids"].split(',')
43
+ redirect_to root_path and return if check_ids.blank?
44
+
45
+ case params['check_group_action'].downcase
46
+ when 'disable'
47
+ Check.where(id: check_ids).update_all(enabled: false)
48
+ when 'enable'
49
+ Check.where(id: check_ids).update_all(enabled: true)
50
+ when 'snooze for'
51
+ Check.where(id: check_ids).update_all(snooze_for: (Time.now + params['snooze_time_select'].to_i.minutes))
52
+ end
53
+
54
+ redirect_to root_path
55
+ end
56
+
41
57
  private
42
58
 
43
59
  def find_check
@@ -15,7 +15,7 @@ class ScheduleByIntervalJob
15
15
  end
16
16
 
17
17
  # Optimized variant, group checks, run all necessary checks with one ssh connection
18
- MyNagios::Check.enabled.where(interval: options['interval']).group_by{|check| { host: check.host, user: check.user, pem_key: check.pem_key } }.each do |config, checks|
18
+ MyNagios::Check.enabled.not_snoozed.where(interval: options['interval']).group_by{|check| { host: check.host, user: check.user, pem_key: check.pem_key } }.each do |config, checks|
19
19
  MonitoringJob.perform_async(checks.map(&:id), config)
20
20
  end
21
21
  end
@@ -5,7 +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) }
8
+ scope :enabled, -> { where(enabled: true) }
9
+ scope :not_snoozed, -> { where('`my_nagios_checks`.`snooze_for` <= NOW() OR `my_nagios_checks`.`snooze_for` IS NULL') }
9
10
 
10
11
  attr_accessor :additional_command_result
11
12
 
@@ -1,9 +1,12 @@
1
1
  - run_now ||= false
2
2
  - show_group ||= false
3
+ - is_snooze = check.snooze_for and check.snooze_for > Time.now
3
4
 
4
5
  - tr_id = show_group ? nil : dom_id(check)
6
+ - tr_html_class = check.enabled? ? 'enabled' : 'disabled'
7
+ - tr_html_class += ' alert alert-info' if is_snooze
5
8
 
6
- %tr{ id: tr_id, class: (check.enabled? ? 'enabled' : 'disabled') }
9
+ %tr{ id: tr_id, class: tr_html_class }
7
10
  - if show_group
8
11
  %td
9
12
  =link_to check.group.name, "##{dom_id(check)}", class: 'fail_check'
@@ -13,10 +16,14 @@
13
16
  ="(regexp: #{check.regexp})" unless check.regexp.blank?
14
17
  %p.check_interval= "run every: #{check.interval} min"
15
18
 
16
- %td
19
+ %td{ class: is_snooze ? 'snooze_for' : '' }
17
20
  %span.label{ class: "label-#{status_to_label(check.status)}"}= check.status
18
21
  =check.latest_state
19
22
 
23
+ - if is_snooze
24
+ %div.snooze_for
25
+ Snooze for: #{check.snooze_for}
26
+
20
27
  - if show_group
21
28
  %strong=check.command
22
29
 
@@ -30,4 +37,8 @@
30
37
  #actions
31
38
  %br
32
39
  =link_to 'edit', edit_check_path(check)
33
- =link_to (check.enabled? ? 'disable' : 'enable' ), toggle_check_path(check), class: 'disable_check', method: :post, data: { remote: true, confirm: 'Are you sure?' }
40
+ =link_to (check.enabled? ? 'disable' : 'enable' ), toggle_check_path(check), class: 'disable_check', method: :post, data: { remote: true, confirm: 'Are you sure?' }
41
+
42
+ %td
43
+ .checkbox_holder
44
+ =check_box_tag dom_id(check), check.id
@@ -2,16 +2,37 @@
2
2
 
3
3
  = render partial: 'failures_list', locals: { criticals: @criticals, show_group: true }
4
4
 
5
+ #group_action.text-center.alert.alert-warning{ role: :alert }
6
+ =form_tag group_action_path do
7
+ Please, set action for selected checks:
8
+ =select_tag :check_group_action, options_for_select(['Disable', 'Enable', 'Snooze for'])
9
+ =select_tag :snooze_time_select, options_for_select(['15 min', '30 min', '60 min'])
10
+ =hidden_field_tag :group_action_check_ids
11
+ =submit_tag
12
+
13
+
14
+
5
15
  #checks{ data: :no_turbolink }
6
- - @group.each do |group|
16
+ %table.table.check_list
17
+ %colgroup
18
+ %col{ width: '10%'}
19
+ %col{ width: '78%'}
20
+ %col{ width: '5%'}
21
+ %col{ width: '5%'}
22
+ %col{ width: '2%'}
23
+ %tr
24
+ %td
25
+ %td
26
+ %td
27
+ %td
28
+ %td
29
+ .checkbox_holder
30
+ =check_box_tag :select_all
7
31
 
8
- %h3=group.name
32
+ - @group.each do |group|
33
+ %tr
34
+ %td{ colspan: 5 }
35
+ %h3=group.name
9
36
 
10
- %table.table.check_list
11
- %colgroup
12
- %col{ width: '10%'}
13
- %col{ width: '80%'}
14
- %col{ width: '5%'}
15
- %col{ width: '5%'}
16
37
  - group.checks.each do |check|
17
38
  = render partial: '/my_nagios/checks/check_row', locals: { check: check, run_now: true }
data/config/routes.rb CHANGED
@@ -3,7 +3,8 @@ 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]
6
+ match 'autorefresh', to: 'welcome#autorefresh', via: [:post]
7
+ match 'group_action', to: 'checks#group_action', via: [:post]
7
8
 
8
9
  resources :checks do
9
10
  member do
@@ -0,0 +1,5 @@
1
+ class AddSnoozeForCheck < ActiveRecord::Migration
2
+ def change
3
+ add_column :my_nagios_checks, :snooze_for, :datetime, default: nil
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module MyNagios
2
- VERSION = "0.0.18"
2
+ VERSION = "0.0.19"
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.18
4
+ version: 0.0.19
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-08-12 00:00:00.000000000 Z
11
+ date: 2016-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -195,6 +195,7 @@ files:
195
195
  - db/migrate/20160503110441_create_my_nagios_groups.rb
196
196
  - db/migrate/20160601081654_add_regexp_to_check.rb
197
197
  - db/migrate/20160621080454_additional_command.rb
198
+ - db/migrate/20160823134410_add_snooze_for_check.rb
198
199
  - lib/my_nagios.rb
199
200
  - lib/my_nagios/engine.rb
200
201
  - lib/my_nagios/version.rb