foreman_expire_hosts 6.0.0 → 7.0.2

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +78 -0
  3. data/.rubocop.yml +18 -13
  4. data/.rubocop_todo.yml +11 -31
  5. data/Gemfile +2 -0
  6. data/README.md +1 -0
  7. data/app/controllers/concerns/foreman_expire_hosts/api/v2/hosts_controller_extensions.rb +2 -0
  8. data/app/controllers/concerns/foreman_expire_hosts/host_controller_extensions.rb +20 -15
  9. data/app/helpers/concerns/foreman_expire_hosts/audits_helper_extensions.rb +4 -0
  10. data/app/helpers/concerns/foreman_expire_hosts/hosts_helper_extensions.rb +5 -22
  11. data/app/helpers/expire_hosts_mailer_helper.rb +3 -0
  12. data/app/helpers/foreman_expire_hosts/hosts_helper.rb +16 -0
  13. data/app/mailers/expire_hosts_mailer.rb +3 -0
  14. data/app/models/concerns/foreman_expire_hosts/host_ext.rb +9 -1
  15. data/app/models/host_status/expiration_status.rb +3 -0
  16. data/app/models/setting/expire_hosts.rb +2 -0
  17. data/app/overrides/add_expired_on_field_to_host_form.rb +4 -2
  18. data/app/overrides/add_expired_on_field_to_host_show.rb +5 -3
  19. data/app/overrides/deleted_expired_host_comment_in_audits.rb +8 -6
  20. data/app/services/foreman_expire_hosts/action/base.rb +9 -2
  21. data/app/services/foreman_expire_hosts/action/delete_expired_hosts.rb +3 -0
  22. data/app/services/foreman_expire_hosts/action/stop_expired_hosts.rb +6 -2
  23. data/app/services/foreman_expire_hosts/expiry_edit_authorizer.rb +2 -0
  24. data/app/services/foreman_expire_hosts/notification/base.rb +12 -3
  25. data/app/services/foreman_expire_hosts/notification/deleted_hosts.rb +2 -0
  26. data/app/services/foreman_expire_hosts/notification/expiry_warning.rb +2 -0
  27. data/app/services/foreman_expire_hosts/notification/failed_deleted_hosts.rb +2 -0
  28. data/app/services/foreman_expire_hosts/notification/failed_stopped_hosts.rb +2 -0
  29. data/app/services/foreman_expire_hosts/notification/stopped_hosts.rb +2 -0
  30. data/app/services/foreman_expire_hosts/safe_destroy.rb +7 -5
  31. data/app/services/foreman_expire_hosts/ui_notifications/hosts/base.rb +4 -1
  32. data/app/services/foreman_expire_hosts/ui_notifications/hosts/expiry_warning.rb +2 -0
  33. data/app/services/foreman_expire_hosts/ui_notifications/hosts/stopped_host.rb +2 -0
  34. data/app/views/api/v2/hosts/expiration.json.rabl +2 -0
  35. data/app/views/hosts/_expired_on_field.html.erb +11 -20
  36. data/app/views/hosts/select_multiple_expiration.html.erb +10 -15
  37. data/config/routes.rb +2 -0
  38. data/db/migrate/20150427101516_add_expiry_on_to_hosts.rb +2 -0
  39. data/db/seeds.d/80_expire_hosts_ui_notification.rb +2 -0
  40. data/extra/foreman_expire_hosts.cron +8 -0
  41. data/foreman_expire_hosts.gemspec +10 -3
  42. data/lib/expire_hosts_notifications.rb +3 -0
  43. data/lib/foreman_expire_hosts.rb +2 -0
  44. data/lib/foreman_expire_hosts/engine.rb +22 -10
  45. data/lib/foreman_expire_hosts/version.rb +3 -1
  46. data/lib/tasks/expired_hosts.rake +3 -1
  47. data/test/factories/foreman_expire_hosts_factories.rb +7 -5
  48. data/test/functional/api/v2/hosts_controller_test.rb +3 -1
  49. data/test/functional/concerns/hosts_controller_extensions_test.rb +3 -1
  50. data/test/helpers/hosts_helper_test.rb +5 -0
  51. data/test/lib/expire_hosts_notifications_test.rb +91 -45
  52. data/test/test_plugin_helper.rb +2 -0
  53. data/test/unit/concerns/host_extensions_test.rb +21 -19
  54. data/test/unit/expire_hosts_mailer_test.rb +6 -0
  55. data/test/unit/expiry_edit_authorizer_test.rb +2 -0
  56. data/test/unit/host_status/expiration_status_test.rb +3 -1
  57. data/test/unit/safe_destroy_test.rb +3 -1
  58. metadata +53 -26
  59. data/app/assets/javascripts/foreman_expire_hosts/application.js +0 -3
  60. data/app/assets/javascripts/foreman_expire_hosts/datepicker_for_host_expired_on_field.js +0 -27
  61. data/app/assets/stylesheets/foreman_expire_hosts/application.scss +0 -4
  62. data/app/overrides/add_js_to_host_index.rb +0 -6
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  class ExpireHostMailerTest < ActionMailer::TestCase
@@ -35,6 +37,10 @@ class ExpireHostMailerTest < ActionMailer::TestCase
35
37
  assert_includes mail.subject, 'Stopped expired hosts in Foreman'
36
38
  end
37
39
 
40
+ test 'should include a deletion date' do
41
+ assert_includes mail.body, "These hosts will be destroyed on #{Date.today}."
42
+ end
43
+
38
44
  test 'should show mitigation text if authorized' do
39
45
  ForemanExpireHosts::ExpiryEditAuthorizer.any_instance.stubs(:authorized?).returns(true)
40
46
  assert_includes mail.body.to_s, 'Please change their expiry date'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  module ForemanExpireHosts
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  class ExpirationStatusTest < ActiveSupport::TestCase
@@ -23,6 +25,6 @@ class ExpirationStatusTest < ActiveSupport::TestCase
23
25
  assert @status.relevant?
24
26
 
25
27
  @host.expired_on = nil
26
- refute @status.relevant?
28
+ assert_not @status.relevant?
27
29
  end
28
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_plugin_helper'
2
4
 
3
5
  module ForemanExpireHosts
@@ -29,7 +31,7 @@ module ForemanExpireHosts
29
31
  test 'deletes a host' do
30
32
  assert Host::Managed.find_by(id: host.id)
31
33
  assert SafeDestroy.new(host).destroy!
32
- refute Host::Managed.find_by(id: host.id)
34
+ assert_not Host::Managed.find_by(id: host.id)
33
35
  end
34
36
  end
35
37
  end
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_expire_hosts
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 7.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nagarjuna Rachaneni
8
8
  - Timo Goebel
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-08 00:00:00.000000000 Z
12
+ date: 2021-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: bootstrap-datepicker-rails
15
+ name: deface
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
@@ -26,13 +26,13 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: deface
29
+ name: rdoc
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
- type: :runtime
35
+ type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
@@ -40,35 +40,64 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rdoc
43
+ name: rubocop
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: 0.80.0
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: 0.80.0
56
56
  - !ruby/object:Gem::Dependency
57
- name: rubocop
57
+ name: rubocop-minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 0.7.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.7.0
70
+ - !ruby/object:Gem::Dependency
71
+ name: rubocop-performance
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 1.5.2
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 1.5.2
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop-rails
58
86
  requirement: !ruby/object:Gem::Requirement
59
87
  requirements:
60
- - - '='
88
+ - - "~>"
61
89
  - !ruby/object:Gem::Version
62
- version: 0.54.0
90
+ version: 2.4.2
63
91
  type: :development
64
92
  prerelease: false
65
93
  version_requirements: !ruby/object:Gem::Requirement
66
94
  requirements:
67
- - - '='
95
+ - - "~>"
68
96
  - !ruby/object:Gem::Version
69
- version: 0.54.0
70
- description: This Plugin will add new column expired_on to hosts to limit the lifetime
71
- of a host.
97
+ version: 2.4.2
98
+ description: |
99
+ A Foreman plugin that allows hosts to expire at a configurable date.
100
+ Hosts will be shut down and automatically deleted after a grace period.
72
101
  email:
73
102
  - nn.nagarjuna@gmail.com
74
103
  - mail@timogoebel.name
@@ -78,27 +107,25 @@ extra_rdoc_files:
78
107
  - README.md
79
108
  - LICENSE
80
109
  files:
110
+ - ".github/workflows/ci.yml"
81
111
  - ".gitignore"
82
112
  - ".rubocop.yml"
83
113
  - ".rubocop_todo.yml"
84
114
  - Gemfile
85
115
  - LICENSE
86
116
  - README.md
87
- - app/assets/javascripts/foreman_expire_hosts/application.js
88
- - app/assets/javascripts/foreman_expire_hosts/datepicker_for_host_expired_on_field.js
89
- - app/assets/stylesheets/foreman_expire_hosts/application.scss
90
117
  - app/controllers/concerns/foreman_expire_hosts/api/v2/hosts_controller_extensions.rb
91
118
  - app/controllers/concerns/foreman_expire_hosts/host_controller_extensions.rb
92
119
  - app/helpers/concerns/foreman_expire_hosts/audits_helper_extensions.rb
93
120
  - app/helpers/concerns/foreman_expire_hosts/hosts_helper_extensions.rb
94
121
  - app/helpers/expire_hosts_mailer_helper.rb
122
+ - app/helpers/foreman_expire_hosts/hosts_helper.rb
95
123
  - app/mailers/expire_hosts_mailer.rb
96
124
  - app/models/concerns/foreman_expire_hosts/host_ext.rb
97
125
  - app/models/host_status/expiration_status.rb
98
126
  - app/models/setting/expire_hosts.rb
99
127
  - app/overrides/add_expired_on_field_to_host_form.rb
100
128
  - app/overrides/add_expired_on_field_to_host_show.rb
101
- - app/overrides/add_js_to_host_index.rb
102
129
  - app/overrides/deleted_expired_host_comment_in_audits.rb
103
130
  - app/services/foreman_expire_hosts/action/base.rb
104
131
  - app/services/foreman_expire_hosts/action/delete_expired_hosts.rb
@@ -127,6 +154,7 @@ files:
127
154
  - config/routes.rb
128
155
  - db/migrate/20150427101516_add_expiry_on_to_hosts.rb
129
156
  - db/seeds.d/80_expire_hosts_ui_notification.rb
157
+ - extra/foreman_expire_hosts.cron
130
158
  - foreman_expire_hosts.gemspec
131
159
  - lib/expire_hosts_notifications.rb
132
160
  - lib/foreman_expire_hosts.rb
@@ -148,7 +176,7 @@ homepage: https://github.com/theforeman/foreman_expire_hosts
148
176
  licenses:
149
177
  - GPL-3.0
150
178
  metadata: {}
151
- post_install_message:
179
+ post_install_message:
152
180
  rdoc_options: []
153
181
  require_paths:
154
182
  - lib
@@ -163,9 +191,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
191
  - !ruby/object:Gem::Version
164
192
  version: '0'
165
193
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.7.3
168
- signing_key:
194
+ rubygems_version: 3.1.2
195
+ signing_key:
169
196
  specification_version: 4
170
197
  summary: Foreman plugin for limiting host lifetime
171
198
  test_files:
@@ -1,3 +0,0 @@
1
- //= require bootstrap-datepicker
2
- //= require foreman_expire_hosts/datepicker_for_host_expired_on_field
3
-
@@ -1,27 +0,0 @@
1
- var shortcuts = {"1 day": 1, "1 week": 7, "1 month": 30, "1 year": 365, "3 days": 3, "3 weeks": 21, "3 months": 90};
2
- function append_shortcuts() {
3
- if ($(".datepicker-days #datepicker_shortcuts").length == 0) {
4
- var shortcuts_html = "<div id='datepicker_shortcuts'><div>";
5
- var shortcut_item = 1;
6
- $.each(shortcuts, function (lable, days) {
7
- var today = new Date();
8
- today.setDate(today.getDate() + days);
9
- if (shortcut_item == 5) {
10
- shortcuts_html += "</div><div style='padding-top: 3px'>"
11
- }
12
- shortcuts_html += "<a style='width: 65px;' class='btn btn-default btn-xs' role='button' title='" + $.fn.datepicker.dates.en.monthsShort[today.getMonth()] + " " + today.getDate() + " " + today.getFullYear() + "' onclick='populate_date_from_days(" + days + ")'>" + lable + "</a>&nbsp;";
13
- shortcut_item += 1
14
- });
15
- shortcuts_html += "</div></div>";
16
- $(".datepicker-days table").before(shortcuts_html)
17
- }
18
- }
19
-
20
- function populate_date_from_days(shortcut_days) {
21
- var today = new Date();
22
- today.setDate(today.getDate() + shortcut_days);
23
- $('#host_expired_on').datepicker('setDate', today);
24
- $('#host_expired_on').datepicker('remove');
25
- //$('#host_expired_on').val(today.getDate()+'/'+(today.getMonth()+1)+'/'+today.getFullYear())
26
- //$('#host_expired_on').datepicker('hide')
27
- }
@@ -1,4 +0,0 @@
1
- /*
2
- *= require_self
3
- *= require bootstrap-datepicker3
4
- */
@@ -1,6 +0,0 @@
1
- Deface::Override.new(
2
- :virtual_path => 'hosts/_list',
3
- :name => 'host_list_expiration_js',
4
- :insert_before => '#confirmation-modal',
5
- :text => "<%= stylesheet 'foreman_expire_hosts/application' %><%= javascript 'foreman_expire_hosts/application' %>"
6
- )