foreman_monitoring 1.0.0 → 1.0.1

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
  SHA256:
3
- metadata.gz: 83bf8624bc1c1ecbb9e8dc6c11340022a204244afe293789405cdaf9e80b10be
4
- data.tar.gz: 0d3d42280a04d22a33792c03ed62aee41a9800cf6a307abb16a06589d03ea0af
3
+ metadata.gz: eca113371402bd1f2251f09d5fd35ef5fce8ef9719299517e37cd56856ee9bbc
4
+ data.tar.gz: 1d03b4a53865238e521074bf22f9f247e0b74413b1265790995ca6269be923cf
5
5
  SHA512:
6
- metadata.gz: 3ec31b7e2cf93786431ccbedbbb7ec36e4fdcce70bb4d2beb0c2faf741b9e3287ceec3878c5f168c09bcb2fe190694f1f5f77d435e3f686456d47dd0f90b57aa
7
- data.tar.gz: 317ad1fdc9bf7a61008007b6b8edce1eec053aecf55cd0abcda95e97dfc670021c01100f5fbe2f30eebbc543ededbbe3e0f3a4811e44609716be9b570635ed77
6
+ metadata.gz: 9f6bb65a07d9a823f9ebad01708ce60b5a8058b6d86b2d67af1016c5361927de85a7e5ce2868bd4b8ec886236949f755d2a04e8b78698d07ed0de9b208b0e830
7
+ data.tar.gz: f1a7ae4199d026bbcf8feb054f783aca7d0eb86096129b3d54d6e051d2be6174648086280ca4b3e1c4c3545cc41d8f4aa921cdd8fa720ea52ef7f1b177e444ac
data/README.md CHANGED
@@ -42,15 +42,15 @@ the `monitoring` feature has to be assigned. This can be done during
42
42
  provisioning or as a bulk action from the host overview.
43
43
 
44
44
  You can configure the default action which will be done during host
45
- provisioning and deprovisioning. Provisioning allows to create a monitoring
46
- object or take no action while deprovisioing allows to delete the monitoring
47
- object, set a downtime or take no action. For rebuild it will by default
45
+ provisioning and de-provisioning. Provisioning allows to create a monitoring
46
+ object or take no action while de-provisoning allows deleting the monitoring
47
+ object, set a downtime or take no action. For rebuild, it will by default
48
48
  set a downtime.
49
49
 
50
50
  The plugin will show you the monitoring status as a sub-status and a detail
51
51
  panel. You can configure if the sub-status should affect the global status.
52
52
 
53
- Furthermore it allows to individually set a downtime at the host detail view
53
+ Furthermore, it allows to individually set a downtime at the host detail view
54
54
  or as a bulk action from the host overview.
55
55
 
56
56
  # Troubleshooting
@@ -58,8 +58,8 @@ or as a bulk action from the host overview.
58
58
  Logging entries relevant to the plug-in will be located in the Foreman's log
59
59
  which is by default `/var/log/foreman/production.log`.
60
60
 
61
- Also check the troubleshooting section of the Smart Proxy plug-in if problems
62
- occure in the underlying communication.
61
+ Also, check the troubleshooting section of the Smart Proxy plug-in if problems
62
+ occur in the underlying communication.
63
63
 
64
64
  ## Contributing
65
65
 
@@ -17,10 +17,9 @@ module Api
17
17
 
18
18
  def create
19
19
  begin
20
- MonitoringResult.import(monitoring_result_params.with_indifferent_access)
20
+ MonitoringResult.import(monitoring_result_params.to_h.with_indifferent_access)
21
21
  rescue StandardError => e
22
- logger.error "Failed to import monitoring result: #{e.message}"
23
- logger.debug e.backtrace.join("\n")
22
+ Foreman::Logging.exception('Failed to import monitoring result', e)
24
23
  render :json => { 'message' => e.message }, :status => :unprocessable_entity
25
24
  return
26
25
  end
@@ -53,10 +53,10 @@ module ForemanMonitoring
53
53
  end
54
54
  end
55
55
 
56
- def datetime_f(f, attr, options = {})
56
+ def monitoring_datetime_f(f, attr, options = {})
57
57
  field(f, attr, options) do
58
58
  addClass options, 'form-control'
59
- f.datetime_local_field attr, options
59
+ f.datetime_field attr, options
60
60
  end
61
61
  end
62
62
  end
@@ -64,7 +64,7 @@ module ForemanMonitoring
64
64
  :compute_resource => compute_resource.try(:to_label),
65
65
  :hostgroup => hostgroup.try(:to_label),
66
66
  :organization => organization.try(:name),
67
- :location => organization.try(:name),
67
+ :location => location.try(:name),
68
68
  :comment => comment,
69
69
  :environment => environment.try(:to_s),
70
70
  :owner_name => owner.try(:name)
@@ -3,6 +3,7 @@ class MonitoringResult < ApplicationRecord
3
3
 
4
4
  belongs_to_host
5
5
 
6
+ # rubocop:disable Metrics/AbcSize
6
7
  def self.import(result)
7
8
  host = Host.find_by(name: result[:host])
8
9
 
@@ -27,7 +28,8 @@ class MonitoringResult < ApplicationRecord
27
28
  end
28
29
 
29
30
  created = MonitoringResult.where(:host => host, :service => result[:service]).first_or_create
30
- if created.timestamp.blank? || updates[:timestamp].blank? || created.timestamp < updates[:timestamp]
31
+ # rubocop:disable Rails/Date
32
+ if created.timestamp.blank? || updates[:timestamp].blank? || (created.timestamp.to_time - updates[:timestamp].to_time) < 2
31
33
  created.update_attributes(updates)
32
34
 
33
35
  if created.persisted?
@@ -37,7 +39,9 @@ class MonitoringResult < ApplicationRecord
37
39
  else
38
40
  logger.debug "Skipping monitoring result import for #{host} as it is older than what we have."
39
41
  end
42
+ # rubocop:enable Rails/Date
40
43
  end
44
+ # rubocop:enable Metrics/AbcSize
41
45
 
42
46
  def status
43
47
  return :ok if downtime
@@ -1,3 +1,3 @@
1
1
  <%= text_f f, :comment, :size => "col-md-5", :label => _('Comment'), :help_inline => _('Short description that explains why the downtime was set.'), :required => true %>
2
- <%= datetime_f f, :starttime, :size => "col-md-5", :label => _('Starttime'), :help_inline => _('Time when the downtime should start.'), :value => Time.current.strftime("%Y-%m-%dT%H:%M"), :required => true %>
3
- <%= datetime_f f, :endtime, :size => "col-md-5", :label => _('Endtime'), :help_inline => _('Time when the downtime should end.'), :value => Time.current.advance(:hours => 2).strftime("%Y-%m-%dT%H:%M"), :required => true %>
2
+ <%= monitoring_datetime_f f, :starttime, :size => "col-md-5", :label => _('Starttime'), :help_inline => _('Time when the downtime should start.'), :min => DateTime.now, :value => Time.current, :required => true %>
3
+ <%= monitoring_datetime_f f, :endtime, :size => "col-md-5", :label => _('Endtime'), :help_inline => _('Time when the downtime should end.'), :value => Time.current.advance(:hours => 2), :required => true %>
@@ -1,7 +1,7 @@
1
1
  <%- if authorized_for(:permission => 'view_monitoring_results', :auth_object => @host) && @host.monitored? -%>
2
2
  <div class="tab-pane" id="monitoring">
3
3
  <% if @host.monitoring_results.any? %>
4
- <table class="table table-bordered table-striped">
4
+ <table class="<%= table_css_classes %>">
5
5
  <thead
6
6
  <tr>
7
7
  <th colspan="2">Monitoring</th>
@@ -1,3 +1,3 @@
1
1
  module ForemanMonitoring
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -0,0 +1,73 @@
1
+ require 'test_plugin_helper'
2
+
3
+ class MonitoringResultTest < ActiveSupport::TestCase
4
+ setup do
5
+ User.current = FactoryBot.build(:user, :admin)
6
+ setup_settings
7
+ disable_orchestration
8
+ disable_monitoring_orchestration
9
+ end
10
+
11
+ context '#import' do
12
+ let(:host) { FactoryBot.create(:host, :managed, :with_monitoring) }
13
+
14
+ let(:initial) do
15
+ {
16
+ host: host.name,
17
+ service: 'cpu metrics',
18
+ timestamp: 1_516_365_380.8834700584,
19
+ result: 1,
20
+ acknowledged: true
21
+ }
22
+ end
23
+
24
+ let(:acknowledegment_cleared) do
25
+ {
26
+ host: host.name,
27
+ service: 'cpu metrics',
28
+ timestamp: 1_516_365_971.2455039024,
29
+ acknowledged: false
30
+ }
31
+ end
32
+
33
+ let(:state_change) do
34
+ {
35
+ host: host.name,
36
+ service: 'cpu metrics',
37
+ timestamp: 1_516_365_971.2461779118,
38
+ result: 0
39
+ }
40
+ end
41
+
42
+ test 'imports a monitoring result' do
43
+ MonitoringResult.import(initial)
44
+ imported = host.monitoring_results.last
45
+ assert_equal true, imported.acknowledged?
46
+ end
47
+
48
+ test 'handles ack and state change in correct order' do
49
+ MonitoringResult.import(initial)
50
+ MonitoringResult.import(acknowledegment_cleared)
51
+ MonitoringResult.import(state_change)
52
+ imported = host.monitoring_results.last
53
+ assert_equal :ok, imported.status
54
+ assert_equal false, imported.acknowledged?
55
+ end
56
+
57
+ test 'handles ack and state change in reverse order' do
58
+ MonitoringResult.import(initial)
59
+ MonitoringResult.import(state_change)
60
+ MonitoringResult.import(acknowledegment_cleared)
61
+ imported = host.monitoring_results.last
62
+ assert_equal :ok, imported.status
63
+ assert_equal false, imported.acknowledged?
64
+ end
65
+
66
+ test 'ignores old data' do
67
+ MonitoringResult.import(state_change)
68
+ MonitoringResult.import(initial)
69
+ imported = host.monitoring_results.last
70
+ assert_equal false, imported.acknowledged?
71
+ end
72
+ end
73
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_monitoring
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timo Goebel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-15 00:00:00.000000000 Z
11
+ date: 2018-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -104,6 +104,7 @@ files:
104
104
  - test/test_plugin_helper.rb
105
105
  - test/unit/host_status/monitoring_status_test.rb
106
106
  - test/unit/host_test.rb
107
+ - test/unit/monitoring_result_test.rb
107
108
  - test/unit/monitoring_test.rb
108
109
  homepage: http://www.github.com/theforeman/foreman_monitoring
109
110
  licenses:
@@ -130,13 +131,14 @@ signing_key:
130
131
  specification_version: 4
131
132
  summary: Foreman plugin for monitoring system integration.
132
133
  test_files:
134
+ - test/unit/host_test.rb
135
+ - test/unit/monitoring_result_test.rb
136
+ - test/unit/host_status/monitoring_status_test.rb
137
+ - test/unit/monitoring_test.rb
138
+ - test/factories/smart_proxy.rb
139
+ - test/factories/monitoring_results.rb
133
140
  - test/factories/feature.rb
134
141
  - test/factories/host.rb
135
- - test/factories/monitoring_results.rb
136
- - test/factories/smart_proxy.rb
137
- - test/functional/hosts_controller_test.rb
138
142
  - test/lib/proxy_api/monitoring_test.rb
139
143
  - test/test_plugin_helper.rb
140
- - test/unit/host_status/monitoring_status_test.rb
141
- - test/unit/host_test.rb
142
- - test/unit/monitoring_test.rb
144
+ - test/functional/hosts_controller_test.rb