foreman_monitoring 0.1.2 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -7
  3. data/Rakefile +0 -0
  4. data/app/controllers/api/v2/downtime_controller.rb +63 -0
  5. data/app/controllers/api/v2/monitoring_results_controller.rb +5 -4
  6. data/app/controllers/concerns/foreman_monitoring/find_host_by_client_cert.rb +60 -0
  7. data/app/controllers/concerns/foreman_monitoring/hosts_controller_extensions.rb +21 -20
  8. data/app/helpers/concerns/foreman_monitoring/hosts_helper_ext.rb +16 -19
  9. data/app/lib/proxy_api/monitoring.rb +9 -6
  10. data/app/models/concerns/foreman_monitoring/host_extensions.rb +15 -14
  11. data/app/models/concerns/foreman_monitoring/hostgroup_extensions.rb +7 -3
  12. data/app/models/concerns/orchestration/monitoring.rb +22 -15
  13. data/app/models/host_status/monitoring_status.rb +7 -4
  14. data/app/models/monitoring_result.rb +13 -6
  15. data/app/models/setting/monitoring.rb +4 -2
  16. data/app/overrides/add_host_monitoring_result_tab.rb +8 -6
  17. data/app/overrides/add_host_multiple_power_set_downtime_checkbox.rb +5 -3
  18. data/app/overrides/add_host_set_downtime_modal.rb +4 -2
  19. data/app/services/monitoring.rb +3 -0
  20. data/app/views/hosts/_downtime_fields.html.erb +2 -2
  21. data/app/views/monitoring_results/_host_tab_pane.html.erb +2 -2
  22. data/config/routes.rb +3 -0
  23. data/db/migrate/20160817135723_create_monitoring_results.rb +5 -1
  24. data/db/migrate/20161220201510_add_monitoring_proxy_id_to_host_and_hostgroup.rb +3 -1
  25. data/db/migrate/201910180900_rename_downtime_host_permission.rb +15 -0
  26. data/db/seeds.d/60-monitoring_proxy_feature.rb +2 -0
  27. data/lib/foreman_monitoring.rb +2 -0
  28. data/lib/foreman_monitoring/engine.rb +32 -28
  29. data/lib/foreman_monitoring/version.rb +3 -1
  30. data/lib/tasks/foreman_monitoring_tasks.rake +5 -5
  31. data/locale/gemspec.rb +2 -0
  32. data/test/controllers/api/v2/downtime_controller_test.rb +73 -0
  33. data/test/factories/feature.rb +4 -2
  34. data/test/factories/host.rb +6 -4
  35. data/test/factories/monitoring_results.rb +9 -7
  36. data/test/factories/smart_proxy.rb +3 -1
  37. data/test/functional/hosts_controller_test.rb +65 -52
  38. data/test/lib/proxy_api/monitoring_test.rb +16 -14
  39. data/test/test_plugin_helper.rb +5 -3
  40. data/test/unit/host_status/monitoring_status_test.rb +18 -16
  41. data/test/unit/host_test.rb +6 -4
  42. data/test/unit/monitoring_result_test.rb +75 -0
  43. data/test/unit/monitoring_test.rb +5 -3
  44. metadata +62 -14
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This calls the main test_helper in Foreman-core
2
4
  require 'test_helper'
3
5
  require 'database_cleaner'
4
6
 
5
- # Add plugin to FactoryGirl's paths
6
- FactoryGirl.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
7
- FactoryGirl.reload
7
+ # Add plugin to FactoryBot's paths
8
+ FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
9
+ FactoryBot.reload
8
10
 
9
11
  # Foreman's setup doesn't handle cleaning up for Minitest::Spec
10
12
  DatabaseCleaner.strategy = :transaction
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  class MonitoringStatusTest < ActiveSupport::TestCase
@@ -6,62 +8,62 @@ class MonitoringStatusTest < ActiveSupport::TestCase
6
8
  disable_monitoring_orchestration
7
9
  end
8
10
 
9
- let(:host) { FactoryGirl.create(:host, :with_monitoring) }
11
+ let(:host) { FactoryBot.create(:host, :with_monitoring) }
10
12
  let(:status) { HostStatus::MonitoringStatus.new(:host => host) }
11
13
 
12
14
  context 'status changes' do
13
15
  test '#to_status should change when monitoring results change' do
14
- FactoryGirl.create(:monitoring_result, :ok, :host => host)
16
+ FactoryBot.create(:monitoring_result, :ok, :host => host)
15
17
  assert_equal HostStatus::MonitoringStatus::OK, status.to_status
16
18
 
17
- FactoryGirl.create(:monitoring_result, :warning, :host => host)
19
+ FactoryBot.create(:monitoring_result, :warning, :host => host)
18
20
  assert_equal HostStatus::MonitoringStatus::WARNING, status.to_status
19
21
 
20
- FactoryGirl.create(:monitoring_result, :unknown, :host => host)
22
+ FactoryBot.create(:monitoring_result, :unknown, :host => host)
21
23
  assert_equal HostStatus::MonitoringStatus::WARNING, status.to_status
22
24
 
23
- FactoryGirl.create(:monitoring_result, :critical, :host => host)
25
+ FactoryBot.create(:monitoring_result, :critical, :host => host)
24
26
  assert_equal HostStatus::MonitoringStatus::CRITICAL, status.to_status
25
27
  end
26
28
 
27
29
  test '#to_status should be warning with critical acknowledged' do
28
- FactoryGirl.create(:monitoring_result, :critical, :acknowledged, :host => host)
30
+ FactoryBot.create(:monitoring_result, :critical, :acknowledged, :host => host)
29
31
  assert_equal HostStatus::MonitoringStatus::WARNING, status.to_status
30
32
  end
31
33
 
32
34
  test '#to_status should be ok with critical in downtime' do
33
- FactoryGirl.create(:monitoring_result, :critical, :downtime, :host => host)
35
+ FactoryBot.create(:monitoring_result, :critical, :downtime, :host => host)
34
36
  assert_equal HostStatus::MonitoringStatus::OK, status.to_status
35
37
  end
36
38
 
37
39
  test '#to_global should change when monitoring results change' do
38
- FactoryGirl.create(:monitoring_result, :ok, :host => host)
40
+ FactoryBot.create(:monitoring_result, :ok, :host => host)
39
41
  status.refresh
40
42
  assert_equal HostStatus::Global::OK, status.to_global
41
43
 
42
- FactoryGirl.create(:monitoring_result, :warning, :host => host)
44
+ FactoryBot.create(:monitoring_result, :warning, :host => host)
43
45
  status.refresh
44
46
  assert_equal HostStatus::Global::WARN, status.to_global
45
47
 
46
- FactoryGirl.create(:monitoring_result, :unknown, :host => host)
48
+ FactoryBot.create(:monitoring_result, :unknown, :host => host)
47
49
  status.refresh
48
50
  assert_equal HostStatus::Global::WARN, status.to_global
49
51
 
50
- FactoryGirl.create(:monitoring_result, :critical, :host => host)
52
+ FactoryBot.create(:monitoring_result, :critical, :host => host)
51
53
  status.refresh
52
54
  assert_equal HostStatus::Global::ERROR, status.to_global
53
55
  end
54
56
  end
55
57
 
56
58
  context 'status with host with monitoring results' do
57
- let(:host) { FactoryGirl.create(:host, :with_monitoring, :with_monitoring_results) }
59
+ let(:host) { FactoryBot.create(:host, :with_monitoring, :with_monitoring_results) }
58
60
 
59
61
  test '#relevant? is only for hosts not in build mode' do
60
62
  host.build = false
61
63
  assert status.relevant?
62
64
 
63
65
  host.build = true
64
- refute status.relevant?
66
+ assert_not status.relevant?
65
67
  end
66
68
 
67
69
  test '#host_known_in_monitoring? should be true' do
@@ -76,10 +78,10 @@ class MonitoringStatusTest < ActiveSupport::TestCase
76
78
  context 'status with host without monitoring results' do
77
79
  test '#relevant? is always false when build changes' do
78
80
  host.build = false
79
- refute status.relevant?
81
+ assert_not status.relevant?
80
82
 
81
83
  host.build = true
82
- refute status.relevant?
84
+ assert_not status.relevant?
83
85
  end
84
86
 
85
87
  test '#refresh! refreshes the date and persists the record' do
@@ -90,7 +92,7 @@ class MonitoringStatusTest < ActiveSupport::TestCase
90
92
  end
91
93
 
92
94
  test '#host_known_in_monitoring? should be false' do
93
- refute status.host_known_in_monitoring?
95
+ assert_not status.host_known_in_monitoring?
94
96
  end
95
97
  end
96
98
  end
@@ -1,15 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  class HostTest < ActiveSupport::TestCase
4
6
  setup do
5
- User.current = FactoryGirl.build(:user, :admin)
7
+ User.current = FactoryBot.build(:user, :admin)
6
8
  setup_settings
7
9
  disable_orchestration
8
10
  disable_monitoring_orchestration
9
11
  end
10
12
 
11
13
  context 'downtime handling' do
12
- let(:host) { FactoryGirl.create(:host, :managed) }
14
+ let(:host) { FactoryBot.create(:host, :managed) }
13
15
 
14
16
  test 'it should set a downtime when build status changes' do
15
17
  host.expects(:downtime_host).once
@@ -22,7 +24,7 @@ class HostTest < ActiveSupport::TestCase
22
24
  end
23
25
 
24
26
  context 'a host with monitoring orchestration' do
25
- let(:host) { FactoryGirl.build(:host, :managed, :with_monitoring) }
27
+ let(:host) { FactoryBot.build(:host, :managed, :with_monitoring) }
26
28
 
27
29
  context 'with create/delete actions' do
28
30
  setup do
@@ -125,7 +127,7 @@ class HostTest < ActiveSupport::TestCase
125
127
  end
126
128
 
127
129
  context 'a host without monitoring' do
128
- let(:host) { FactoryGirl.build(:host, :managed) }
130
+ let(:host) { FactoryBot.build(:host, :managed) }
129
131
 
130
132
  test 'should not queue any monitoring actions' do
131
133
  assert_valid host
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_plugin_helper'
4
+
5
+ class MonitoringResultTest < ActiveSupport::TestCase
6
+ setup do
7
+ User.current = FactoryBot.build(:user, :admin)
8
+ setup_settings
9
+ disable_orchestration
10
+ disable_monitoring_orchestration
11
+ end
12
+
13
+ context '#import' do
14
+ let(:host) { FactoryBot.create(:host, :managed, :with_monitoring) }
15
+
16
+ let(:initial) do
17
+ {
18
+ host: host.name,
19
+ service: 'cpu metrics',
20
+ timestamp: 1_516_365_380.8834700584,
21
+ result: 1,
22
+ acknowledged: true
23
+ }
24
+ end
25
+
26
+ let(:acknowledegment_cleared) do
27
+ {
28
+ host: host.name,
29
+ service: 'cpu metrics',
30
+ timestamp: 1_516_365_971.2455039024,
31
+ acknowledged: false
32
+ }
33
+ end
34
+
35
+ let(:state_change) do
36
+ {
37
+ host: host.name,
38
+ service: 'cpu metrics',
39
+ timestamp: 1_516_365_971.2461779118,
40
+ result: 0
41
+ }
42
+ end
43
+
44
+ test 'imports a monitoring result' do
45
+ MonitoringResult.import(initial)
46
+ imported = host.monitoring_results.last
47
+ assert_equal true, imported.acknowledged?
48
+ end
49
+
50
+ test 'handles ack and state change in correct order' do
51
+ MonitoringResult.import(initial)
52
+ MonitoringResult.import(acknowledegment_cleared)
53
+ MonitoringResult.import(state_change)
54
+ imported = host.monitoring_results.last
55
+ assert_equal :ok, imported.status
56
+ assert_equal false, imported.acknowledged?
57
+ end
58
+
59
+ test 'handles ack and state change in reverse order' do
60
+ MonitoringResult.import(initial)
61
+ MonitoringResult.import(state_change)
62
+ MonitoringResult.import(acknowledegment_cleared)
63
+ imported = host.monitoring_results.last
64
+ assert_equal :ok, imported.status
65
+ assert_equal false, imported.acknowledged?
66
+ end
67
+
68
+ test 'ignores old data' do
69
+ MonitoringResult.import(state_change)
70
+ MonitoringResult.import(initial)
71
+ imported = host.monitoring_results.last
72
+ assert_equal false, imported.acknowledged?
73
+ end
74
+ end
75
+ end
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  class MonitoringTest < ActiveSupport::TestCase
4
6
  setup do
5
- User.current = FactoryGirl.build(:user, :admin)
7
+ User.current = FactoryBot.build(:user, :admin)
6
8
  setup_settings
7
9
  disable_monitoring_orchestration
8
10
  end
9
11
 
10
- let(:monitoring_proxy) { FactoryGirl.create(:smart_proxy, :monitoring) }
11
- let(:host) { FactoryGirl.create(:host, :managed, :with_monitoring, :monitoring_proxy => monitoring_proxy) }
12
+ let(:monitoring_proxy) { FactoryBot.create(:smart_proxy, :monitoring) }
13
+ let(:host) { FactoryBot.create(:host, :managed, :with_monitoring, :monitoring_proxy => monitoring_proxy) }
12
14
  let(:monitoring) { Monitoring.new(:monitoring_proxy => monitoring_proxy) }
13
15
 
14
16
  test '#set_downtime_host should call proxy api' do
metadata CHANGED
@@ -1,31 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_monitoring
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 2.1.0
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-08 00:00:00.000000000 Z
11
+ date: 2020-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rubocop
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - '='
31
+ - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: 0.49.1
33
+ version: 0.80.0
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - '='
38
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 0.49.1
40
+ version: 0.80.0
27
41
  - !ruby/object:Gem::Dependency
28
- name: rdoc
42
+ name: rubocop-minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-performance
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rails
29
71
  requirement: !ruby/object:Gem::Requirement
30
72
  requirements:
31
73
  - - ">="
@@ -62,7 +104,9 @@ files:
62
104
  - LICENSE
63
105
  - README.md
64
106
  - Rakefile
107
+ - app/controllers/api/v2/downtime_controller.rb
65
108
  - app/controllers/api/v2/monitoring_results_controller.rb
109
+ - app/controllers/concerns/foreman_monitoring/find_host_by_client_cert.rb
66
110
  - app/controllers/concerns/foreman_monitoring/hosts_controller_extensions.rb
67
111
  - app/helpers/concerns/foreman_monitoring/hosts_helper_ext.rb
68
112
  - app/lib/proxy_api/monitoring.rb
@@ -86,6 +130,7 @@ files:
86
130
  - config/routes.rb
87
131
  - db/migrate/20160817135723_create_monitoring_results.rb
88
132
  - db/migrate/20161220201510_add_monitoring_proxy_id_to_host_and_hostgroup.rb
133
+ - db/migrate/201910180900_rename_downtime_host_permission.rb
89
134
  - db/seeds.d/60-monitoring_proxy_feature.rb
90
135
  - lib/foreman_monitoring.rb
91
136
  - lib/foreman_monitoring/engine.rb
@@ -95,6 +140,7 @@ files:
95
140
  - locale/en/foreman_monitoring.po
96
141
  - locale/foreman_monitoring.pot
97
142
  - locale/gemspec.rb
143
+ - test/controllers/api/v2/downtime_controller_test.rb
98
144
  - test/factories/feature.rb
99
145
  - test/factories/host.rb
100
146
  - test/factories/monitoring_results.rb
@@ -104,10 +150,11 @@ files:
104
150
  - test/test_plugin_helper.rb
105
151
  - test/unit/host_status/monitoring_status_test.rb
106
152
  - test/unit/host_test.rb
153
+ - test/unit/monitoring_result_test.rb
107
154
  - test/unit/monitoring_test.rb
108
- homepage: http://www.github.com/theforeman/foreman_monitoring
155
+ homepage: https://github.com/theforeman/foreman_monitoring
109
156
  licenses:
110
- - GPLv3
157
+ - GPL-3.0
111
158
  metadata: {}
112
159
  post_install_message:
113
160
  rdoc_options: []
@@ -124,19 +171,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
171
  - !ruby/object:Gem::Version
125
172
  version: '0'
126
173
  requirements: []
127
- rubyforge_project:
128
- rubygems_version: 2.7.3
174
+ rubygems_version: 3.0.3
129
175
  signing_key:
130
176
  specification_version: 4
131
177
  summary: Foreman plugin for monitoring system integration.
132
178
  test_files:
133
- - test/factories/feature.rb
134
179
  - test/factories/host.rb
135
180
  - test/factories/monitoring_results.rb
136
181
  - test/factories/smart_proxy.rb
137
- - test/functional/hosts_controller_test.rb
182
+ - test/factories/feature.rb
138
183
  - test/lib/proxy_api/monitoring_test.rb
184
+ - test/functional/hosts_controller_test.rb
185
+ - test/controllers/api/v2/downtime_controller_test.rb
139
186
  - test/test_plugin_helper.rb
140
- - test/unit/host_status/monitoring_status_test.rb
187
+ - test/unit/monitoring_result_test.rb
141
188
  - test/unit/host_test.rb
142
189
  - test/unit/monitoring_test.rb
190
+ - test/unit/host_status/monitoring_status_test.rb