foreman-tasks 8.2.1 → 8.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/lib/actions/check_long_running_tasks.rb +6 -8
- data/app/lib/actions/deliver_long_running_tasks_notification.rb +0 -4
- data/app/lib/actions/observable_action.rb +11 -2
- data/app/models/foreman_tasks/concerns/user_extensions.rb +0 -19
- data/db/seeds.d/95-mail_notifications.rb +0 -14
- data/lib/foreman_tasks/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ea98197d16aef3c4ca8f16c10b9533f7e89e916c8cefffed1e8523966dc85fa
|
4
|
+
data.tar.gz: fee12ffd69d32683f091f49c1362df778523a29bba97d411931c0608cedd19cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbeafbdf22b249957160385253f62b1f901cd4faca182c47fe5f637a375f55e98b57d7fe28ab814bf3f5fadb11aac50133b7f291e6371e2e1a8896c136410c4e
|
7
|
+
data.tar.gz: 946b98f863337862dfbd3b1cf6bd421b139836cd2920368e5642e50aed3a7ba1118bed49d481ee3e2ef208acd921275bcc3ef4c5b7316b1199b894cecbb715e2
|
@@ -8,10 +8,12 @@ module Actions
|
|
8
8
|
def plan
|
9
9
|
time = Time.now.utc
|
10
10
|
cutoff = time - INTERVAL
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
.where(
|
11
|
+
notification = ::ForemanTasks::TasksMailNotification.find_by(name: "long_running_tasks")
|
12
|
+
org_admin_role = Role.find_by(name: 'Organization admin')
|
13
|
+
users = User.left_joins(:roles)
|
14
|
+
.where(id: UserMailNotification.where(mail_notification_id: notification.id).select(:role_id))
|
15
|
+
.or(User.where(admin: true))
|
16
|
+
.or(User.where(id: UserRole.where(id: [org_admin_role.id] + org_admin_role.cloned_role_ids).select(:owner_id)))
|
15
17
|
|
16
18
|
query = "state ^ (#{STATES.join(', ')}) AND state_updated_at <= \"#{cutoff}\""
|
17
19
|
users.each do |user|
|
@@ -39,9 +41,5 @@ module Actions
|
|
39
41
|
def humanized_name
|
40
42
|
_('Check for long running tasks')
|
41
43
|
end
|
42
|
-
|
43
|
-
def rescue_strategy_for_self
|
44
|
-
Dynflow::Action::Rescue::Skip
|
45
|
-
end
|
46
44
|
end
|
47
45
|
end
|
@@ -36,7 +36,7 @@ module Actions
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def event_names
|
39
|
-
[event_name_base + '_' + event_name_suffix(
|
39
|
+
[:success, :failure].map { |suffix| event_name_base + '_' + event_name_suffix(suffix) }
|
40
40
|
end
|
41
41
|
|
42
42
|
def namespaced_event_names
|
@@ -51,7 +51,16 @@ module Actions
|
|
51
51
|
def self.included(base)
|
52
52
|
base.extend ClassMethods
|
53
53
|
base.include ::Foreman::Observable
|
54
|
-
base.execution_plan_hooks.use :
|
54
|
+
base.execution_plan_hooks.use :emit_event_success, :on => :success
|
55
|
+
base.execution_plan_hooks.use :emit_event_failure, :on => :failure
|
56
|
+
end
|
57
|
+
|
58
|
+
def emit_event_success(execution_plan)
|
59
|
+
emit_event(execution_plan, :success)
|
60
|
+
end
|
61
|
+
|
62
|
+
def emit_event_failure(execution_plan)
|
63
|
+
emit_event(execution_plan, :failure)
|
55
64
|
end
|
56
65
|
|
57
66
|
def emit_event(execution_plan, hook = :success)
|
@@ -8,25 +8,6 @@ module ForemanTasks
|
|
8
8
|
has_many :tasks, :dependent => :nullify,
|
9
9
|
:class_name => ::ForemanTasks::Task.name
|
10
10
|
# rubocop:enable Rails/ReflectionClassName
|
11
|
-
|
12
|
-
before_validation :attach_task_mail_notifications, on: :create
|
13
|
-
end
|
14
|
-
|
15
|
-
def attach_task_mail_notifications
|
16
|
-
return if ::ForemanSeeder.is_seeding
|
17
|
-
|
18
|
-
org_admin_role = Role.find_by(name: 'Organization admin')
|
19
|
-
admin_by_role = org_admin_role &&
|
20
|
-
(roles.map(&:id) & ([org_admin_role.id] + org_admin_role.cloned_role_ids)).any?
|
21
|
-
|
22
|
-
return unless admin || admin_by_role
|
23
|
-
|
24
|
-
notification = MailNotification.find_by(name: 'long_running_tasks')
|
25
|
-
return if notification.nil?
|
26
|
-
|
27
|
-
if user_mail_notifications.none? { |n| n.mail_notification_id == notification.id }
|
28
|
-
user_mail_notifications.build(mail_notification_id: notification.id, interval: 'Subscribe')
|
29
|
-
end
|
30
11
|
end
|
31
12
|
end
|
32
13
|
end
|
@@ -20,19 +20,5 @@ notifications.each do |notification|
|
|
20
20
|
raise ::Foreman::Exception.new(N_("Unable to create mail notification: %s"),
|
21
21
|
SeedHelper.format_errors(created_notification))
|
22
22
|
end
|
23
|
-
|
24
|
-
org_admin_role = Role.find_by(name: 'Organization admin')
|
25
|
-
|
26
|
-
users = User.left_joins(:roles)
|
27
|
-
.joins(:auth_source)
|
28
|
-
.where(admin: true)
|
29
|
-
.or(User.where(id: UserRole.where(id: [org_admin_role.id] + org_admin_role.cloned_role_ids).select(:owner_id)))
|
30
|
-
.where.not(auth_source: { name: 'Hidden' })
|
31
|
-
users.each do |user|
|
32
|
-
mail = UserMailNotification.create(mail_notification_id: created_notification.id, user_id: user.id, interval: 'Subscribe')
|
33
|
-
if mail.nil? || mail.errors.any?
|
34
|
-
raise ::Foreman::Exception.new(N_("Unable to enable mail notification to user '%s': %s"), user.login, SeedHelper.format_errors(mail))
|
35
|
-
end
|
36
|
-
end
|
37
23
|
end
|
38
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman-tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.
|
4
|
+
version: 8.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Nečas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11
|
11
|
+
date: 2023-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dynflow
|