foreman-tasks 0.6.15 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWU1NDFhZjAxYjZkNDAwYzJkZTA0YTBlOTcxMGQ3NGIxYTQzNWFiYg==
4
+ YzVkNDM3MzdlYjM0YmI2NTE5ZjE3YTY4MmYyNWQ2NDMyYmFlYzgxMA==
5
5
  data.tar.gz: !binary |-
6
- YmVmNjMwODk3YTNiYTY1NGNjYWUyMDI3NDBkZTM4ZmVjN2M1ZDllMA==
6
+ MGFiYzQ3MGQyMWFlMTkyNjBjMDYzZGFkNDA3YTdkNTAyZGI1Yzg5MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzM3NjM1M2Y1ODA2NmYwZDMzZjE1OTZiN2I3NDRmOWNmOTFkOTc5ZWQ2Yzc3
10
- NWI0ZTZmOGU5OWU1MzhlMTM3NmQ3MDZjYjIxNTEzOTY1OGYzYzI3ODE4ZGZi
11
- NzhhZGExNDkxZjMwYjJmZjFmYzUyYTk5NDI2YmY0N2I1NWE0ODk=
9
+ ODk5NDBhNDQ5MDI5YjI0ODQ4NDkyNDUwYTYxY2FjODM0ZTZjNzk5N2Y2YmI3
10
+ MDhjNWM1MDEyOTg4ZmE5NjIyNGNjYjJhZjUwMjRmMTQ1OGZiNjA5MWNiODQw
11
+ YTNlOTgwZjM5ZTE4MWQ2OTg3YTc0MzZhMDdiMGE5YjIwN2I1Mjk=
12
12
  data.tar.gz: !binary |-
13
- YTIyM2QxZDVkZjY0ODhlMTMwNjdmODMyOGYyMjViNDg3MjhhN2QyYmZjNzc3
14
- MTJmNTAxODA0ZGNiZmJkZjVkYTRhYTEzYzc0ZjVjZWI3NTMxN2JhNjQxYTlj
15
- ZTJkMzM4MmQyNTcwYjgyNjI1NzI2NWY1ZTFkYjgyYTE1YTUzN2Y=
13
+ ZmNmZmM4OGIyNDI0OWY0NGYxYmY4YTQxZmM0NDkyNmFmNmVmYjkwZDdhOWYy
14
+ MGU1ZDI5MzI1ZmQxNzBkOWNiMWQwNGYzNjk0YTI4YmYzZGI1NTcyZGEwMzgw
15
+ ZDM3MDFlNzM2YmZkOGQwMGMzMDE3MjI4NzczYzVhNzIyMTQ5OGE=
data/config/routes.rb CHANGED
@@ -24,7 +24,7 @@ Foreman::Application.routes.draw do
24
24
  end
25
25
 
26
26
  if ForemanTasks.dynflow.required?
27
- require 'dynflow/web_console'
27
+ require 'dynflow/web'
28
28
  mount ForemanTasks.dynflow.web_console => "/dynflow"
29
29
  end
30
30
  end
data/lib/foreman_tasks.rb CHANGED
@@ -21,8 +21,7 @@ module ForemanTasks
21
21
  Match! async, true, false
22
22
 
23
23
  match trigger(action, *args, &block),
24
- (on ::Dynflow::World::PlaningFailed.(error: ~any) |
25
- ::Dynflow::World::ExecutionFailed.(error: ~any) do |error|
24
+ (on ::Dynflow::World::PlaningFailed.(error: ~any) do |error|
26
25
  raise error
27
26
  end),
28
27
  (on ::Dynflow::World::Triggered.(execution_plan_id: ~any, future: ~any) do |id, finished|
@@ -45,13 +45,7 @@ module ForemanTasks
45
45
 
46
46
  # don't try to do any rescuing until the tables are properly migrated
47
47
  if !Foreman.in_rake?('db:migrate') && (ForemanTasks::Task.table_exists? rescue(false))
48
- # for now, we can check the consistency only when there
49
- # is no remote executor. We should be able to check the consistency
50
- # every time the new world is created when there is a register
51
- # of executors
52
- world.consistency_check
53
- world.execute_planned_execution_plans
54
-
48
+ world.auto_execute
55
49
  ForemanTasks::Task::DynflowTask.consistency_check
56
50
  end
57
51
  end
@@ -87,7 +81,7 @@ module ForemanTasks
87
81
  end
88
82
 
89
83
  def web_console
90
- ::Dynflow::WebConsole.setup do
84
+ ::Dynflow::Web.setup do
91
85
  before do
92
86
  if !Setting[:dynflow_enable_console] ||
93
87
  (Setting[:dynflow_console_require_auth] && !ConsoleAuthorizer.new(env).allow?)
@@ -18,10 +18,6 @@ module ForemanTasks
18
18
  attr_accessor :remote
19
19
  alias_method :remote?, :remote
20
20
 
21
- # if remote set to true, use this path for socket communication
22
- # between this process and the external executor
23
- attr_accessor :remote_socket_path
24
-
25
21
  # what transaction adapater should be used, by default, it uses the ActiveRecord
26
22
  # based adapter, expecting ActiveRecord is used as ORM in the application
27
23
  attr_accessor :transaction_adapter
@@ -44,7 +40,6 @@ module ForemanTasks
44
40
  self.pool_size = 5
45
41
  self.db_pool_size = pool_size + 5
46
42
  self.remote = Rails.env.production?
47
- self.remote_socket_path = File.join(Rails.root, "tmp", "sockets", "dynflow_socket")
48
43
  self.transaction_adapter = ::Dynflow::TransactionAdapters::ActiveRecord.new
49
44
  self.eager_load_paths = []
50
45
  self.lazy_initialization = !Rails.env.production?
@@ -58,7 +53,7 @@ module ForemanTasks
58
53
  end
59
54
 
60
55
  def initialize_world(world_class = ::Dynflow::World)
61
- world_class.new(world_options).tap do |world|
56
+ world_class.new(world_config).tap do |world|
62
57
  @on_init.each { |init| init.call(world) }
63
58
  end
64
59
  end
@@ -98,12 +93,19 @@ module ForemanTasks
98
93
  protected
99
94
 
100
95
  # generates the options hash consumable by the Dynflow's world
101
- def world_options
102
- { logger_adapter: ::Dynflow::LoggerAdapters::Delegator.new(action_logger, dynflow_logger),
103
- pool_size: 5,
104
- persistence_adapter: initialize_persistence,
105
- transaction_adapter: transaction_adapter,
106
- executor: -> world { initialize_executor world } }
96
+ def world_config
97
+ ::Dynflow::Config.new.tap do |config|
98
+ config.auto_rescue = true
99
+ config.logger_adapter = ::Dynflow::LoggerAdapters::Delegator.new(action_logger, dynflow_logger)
100
+ config.pool_size = 5
101
+ config.persistence_adapter = initialize_persistence
102
+ config.transaction_adapter = transaction_adapter
103
+ config.executor = ->(world, _) { initialize_executor(world) }
104
+ config.connector = ->(world, _) { initialize_connector(world) }
105
+
106
+ # we can't do any operation until the ForemanTasks.dynflow.world is set
107
+ config.auto_execute = false
108
+ end
107
109
  end
108
110
 
109
111
  def default_sequel_adapter_options
@@ -125,12 +127,16 @@ module ForemanTasks
125
127
 
126
128
  def initialize_executor(world)
127
129
  if self.remote?
128
- ::Dynflow::Executors::RemoteViaSocket.new(world, self.remote_socket_path)
130
+ false
129
131
  else
130
132
  ::Dynflow::Executors::Parallel.new(world, self.pool_size)
131
133
  end
132
134
  end
133
135
 
136
+ def initialize_connector(world)
137
+ ::Dynflow::Connectors::Database.new(world)
138
+ end
139
+
134
140
  # Sequel adapter based on Rails app database.yml configuration
135
141
  def initialize_persistence
136
142
  ForemanTasks::Dynflow::Persistence.new(default_sequel_adapter_options)
@@ -3,7 +3,7 @@ require 'fileutils'
3
3
  module ForemanTasks
4
4
  class Dynflow::Daemon
5
5
 
6
- # load the Rails environment and initialize the executor and listener
6
+ # load the Rails environment and initialize the executor
7
7
  # in this thread.
8
8
  def run(foreman_root = Dir.pwd)
9
9
  STDERR.puts("Starting Rails environment")
@@ -13,10 +13,10 @@ module ForemanTasks
13
13
  end
14
14
  ForemanTasks.dynflow.executor!
15
15
  require foreman_env_file
16
- STDERR.puts("Starting listener")
17
- daemon = ::Dynflow::Daemon.new(listener, world, lock_file)
18
16
  STDERR.puts("Everything ready")
19
- daemon.run
17
+ sleep
18
+ ensure
19
+ STDERR.puts("Exiting")
20
20
  end
21
21
 
22
22
  # run the executor as a daemon
@@ -54,35 +54,10 @@ module ForemanTasks
54
54
  exit 1
55
55
  end
56
56
  end
57
- if command == "start" || command == "restart"
58
- STDERR.puts('Waiting for the executor to be ready...')
59
- options[:wait_attempts].times do |i|
60
- STDERR.print('.')
61
- if File.exists?(lock_file)
62
- STDERR.puts('executor started successfully')
63
- break
64
- else
65
- sleep options[:wait_sleep]
66
- end
67
- end
68
- end
69
57
  end
70
58
 
71
59
  protected
72
60
 
73
- def listener
74
- FileUtils.mkdir_p(File.dirname(socket_path))
75
- ::Dynflow::Listeners::Socket.new(world, socket_path)
76
- end
77
-
78
- def socket_path
79
- ForemanTasks.dynflow.config.remote_socket_path
80
- end
81
-
82
- def lock_file
83
- File.join(Rails.root, 'tmp', 'dynflow_executor.lock')
84
- end
85
-
86
61
  def world
87
62
  ForemanTasks.dynflow.world
88
63
  end
@@ -16,6 +16,8 @@ module ForemanTasks
16
16
  ForemanTasks.dynflow.world.logger.error(e.backtrace.join("\n"))
17
17
  end
18
18
  end
19
+ ensure
20
+ ::ActiveRecord::Base.clear_active_connections!
19
21
  end
20
22
 
21
23
  def on_execution_plan_save(execution_plan_id, data)
@@ -1,3 +1,3 @@
1
1
  module ForemanTasks
2
- VERSION = "0.6.15"
2
+ VERSION = "0.7.0"
3
3
  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.6.15
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 0.7.9
19
+ version: 0.8.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 0.7.9
26
+ version: 0.8.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sequel
29
29
  requirement: !ruby/object:Gem::Requirement