foreman-tasks 0.1.3 → 0.1.4
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.
- data/app/lib/actions/helpers/humanizer.rb +4 -2
- data/app/models/foreman_tasks/concerns/action_subject.rb +17 -1
- data/lib/foreman_tasks.rb +16 -2
- data/lib/foreman_tasks/dynflow.rb +1 -5
- data/lib/foreman_tasks/engine.rb +5 -0
- data/lib/foreman_tasks/triggers.rb +25 -0
- data/lib/foreman_tasks/version.rb +1 -1
- metadata +3 -3
- data/app/lib/actions/test_action.rb +0 -17
@@ -3,12 +3,14 @@ module Actions
|
|
3
3
|
|
4
4
|
class Humanizer
|
5
5
|
|
6
|
-
PARTS_ORDER = [:
|
6
|
+
PARTS_ORDER = [:user,
|
7
|
+
:repository,
|
7
8
|
:product,
|
8
9
|
:system,
|
9
10
|
:organization]
|
10
11
|
# Just to get the trings into pot file
|
11
|
-
PARTS_TRANSLATIONS = [N_('
|
12
|
+
PARTS_TRANSLATIONS = [N_('user'),
|
13
|
+
N_('repository'),
|
12
14
|
N_('product'),
|
13
15
|
N_('system'),
|
14
16
|
N_('organization')]
|
@@ -5,6 +5,10 @@ module ForemanTasks
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
+
before_create :before_plan_action
|
9
|
+
before_update :before_plan_action
|
10
|
+
before_destroy :before_plan_action
|
11
|
+
|
8
12
|
after_create :plan_create_action
|
9
13
|
after_update :plan_update_action
|
10
14
|
after_destroy :plan_destroy_action
|
@@ -52,6 +56,17 @@ module ForemanTasks
|
|
52
56
|
return result
|
53
57
|
end
|
54
58
|
|
59
|
+
# dynflow actions are async by default
|
60
|
+
def before_plan_action
|
61
|
+
@dynflow_sync_action = false
|
62
|
+
return true
|
63
|
+
end
|
64
|
+
|
65
|
+
# to make the triggered action synchronous
|
66
|
+
def sync_action!
|
67
|
+
@dynflow_sync_action = true
|
68
|
+
end
|
69
|
+
|
55
70
|
def create_action
|
56
71
|
end
|
57
72
|
|
@@ -93,7 +108,8 @@ module ForemanTasks
|
|
93
108
|
# Execute the prepared execution plan after the db transaction was commited
|
94
109
|
def execute_planned_action
|
95
110
|
if @execution_plan
|
96
|
-
::ForemanTasks.dynflow.world.execute(@execution_plan.id)
|
111
|
+
run = ::ForemanTasks.dynflow.world.execute(@execution_plan.id)
|
112
|
+
run.finished.wait if @dynflow_sync_action
|
97
113
|
end
|
98
114
|
return true
|
99
115
|
end
|
data/lib/foreman_tasks.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'foreman_tasks/version'
|
2
2
|
require 'foreman_tasks/engine'
|
3
3
|
require 'foreman_tasks/dynflow'
|
4
|
+
require 'foreman_tasks/triggers'
|
4
5
|
|
5
6
|
module ForemanTasks
|
7
|
+
extend Algebrick::TypeCheck
|
6
8
|
|
7
9
|
def self.dynflow
|
8
10
|
@dynflow ||= ForemanTasks::Dynflow.new
|
@@ -12,9 +14,21 @@ module ForemanTasks
|
|
12
14
|
dynflow.world.trigger action, *args, &block
|
13
15
|
end
|
14
16
|
|
15
|
-
def self.
|
17
|
+
def self.trigger_task(async, action, *args, &block)
|
18
|
+
Match! async, true, false
|
19
|
+
|
16
20
|
run = trigger(action, *args, &block)
|
17
|
-
|
21
|
+
run.finished.wait if async == false
|
22
|
+
ForemanTasks::Task::DynflowTask.find_by_external_id!(run.id)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.async_task(action, *args, &block)
|
26
|
+
trigger_task true, action, *args, &block
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.sync_task(action, *args, &block)
|
30
|
+
# TODO raise aggregation error when there are failed run-steps
|
31
|
+
trigger_task false, action, *args, &block
|
18
32
|
end
|
19
33
|
|
20
34
|
end
|
@@ -38,11 +38,6 @@ module ForemanTasks
|
|
38
38
|
config.initialize_world.tap do |world|
|
39
39
|
@world = world
|
40
40
|
|
41
|
-
ActionDispatch::Reloader.to_prepare do
|
42
|
-
ForemanTasks.dynflow.eager_load_actions!
|
43
|
-
world.reload!
|
44
|
-
end
|
45
|
-
|
46
41
|
unless config.remote?
|
47
42
|
at_exit { world.terminate.wait }
|
48
43
|
|
@@ -100,6 +95,7 @@ module ForemanTasks
|
|
100
95
|
require_dependency file
|
101
96
|
end
|
102
97
|
end
|
98
|
+
@world.reload! if @world
|
103
99
|
end
|
104
100
|
end
|
105
101
|
end
|
data/lib/foreman_tasks/engine.rb
CHANGED
@@ -40,6 +40,11 @@ module ForemanTasks
|
|
40
40
|
end
|
41
41
|
|
42
42
|
initializer "foreman_tasks.initialize_dynflow" do
|
43
|
+
ForemanTasks.dynflow.eager_load_actions!
|
44
|
+
ActionDispatch::Reloader.to_prepare do
|
45
|
+
ForemanTasks.dynflow.eager_load_actions!
|
46
|
+
end
|
47
|
+
|
43
48
|
unless ForemanTasks.dynflow.config.lazy_initialization
|
44
49
|
if defined?(PhusionPassenger)
|
45
50
|
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module ForemanTasks
|
2
|
+
module Triggers
|
3
|
+
# for test overrides if needed
|
4
|
+
attr_writer :foreman_tasks
|
5
|
+
def foreman_tasks
|
6
|
+
@foreman_tasks ||= ForemanTasks
|
7
|
+
end
|
8
|
+
|
9
|
+
def trigger(action, *args, &block)
|
10
|
+
foreman_tasks.dynflow.world.trigger action, *args, &block
|
11
|
+
end
|
12
|
+
|
13
|
+
def trigger_task(async, action, *args, &block)
|
14
|
+
foreman_tasks.trigger_task(async, action, *args, &block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def async_task(action, *args, &block)
|
18
|
+
foreman_tasks.async_task(action, *args, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def sync_task(action, *args, &block)
|
22
|
+
foreman_tasks.sync_task(action, *args, &block)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman-tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -132,7 +132,6 @@ files:
|
|
132
132
|
- app/lib/actions/helpers/lock.rb
|
133
133
|
- app/lib/actions/entry_action.rb
|
134
134
|
- app/lib/actions/base.rb
|
135
|
-
- app/lib/actions/test_action.rb
|
136
135
|
- app/lib/actions/foreman/host/import_facts.rb
|
137
136
|
- app/lib/actions/foreman/architecture/create.rb
|
138
137
|
- app/lib/actions/foreman/architecture/update.rb
|
@@ -156,6 +155,7 @@ files:
|
|
156
155
|
- lib/foreman_tasks/tasks/dynflow.rake
|
157
156
|
- lib/foreman_tasks/engine.rb
|
158
157
|
- lib/foreman_tasks/version.rb
|
158
|
+
- lib/foreman_tasks/triggers.rb
|
159
159
|
- lib/foreman_tasks/dynflow/configuration.rb
|
160
160
|
- lib/foreman_tasks/dynflow/persistence.rb
|
161
161
|
- lib/foreman_tasks/dynflow/daemon.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Actions
|
2
|
-
class TestAction < Base
|
3
|
-
|
4
|
-
def run(event = nil)
|
5
|
-
case event
|
6
|
-
when nil
|
7
|
-
suspend do |suspended_action|
|
8
|
-
puts "Execution plan id is #{suspended_action.execution_plan_id}"
|
9
|
-
puts "Step id is #{suspended_action.step_id}"
|
10
|
-
end
|
11
|
-
else
|
12
|
-
puts event.inspect
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|