foreman-tasks-core 0.1.8 → 0.2.0
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.
- checksums.yaml +4 -4
- data/lib/foreman_tasks_core.rb +0 -7
- data/lib/foreman_tasks_core/runner/action.rb +0 -7
- data/lib/foreman_tasks_core/runner/dispatcher.rb +3 -17
- data/lib/foreman_tasks_core/runner/update.rb +0 -7
- data/lib/foreman_tasks_core/ticker.rb +2 -2
- data/lib/foreman_tasks_core/version.rb +1 -1
- metadata +3 -4
- data/lib/foreman_tasks_core/otp_manager.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82c45ce63472dd3fa8bdc0d67753e06c71493fa9
|
4
|
+
data.tar.gz: b45d72c387ea36571f352838cf56b356928f6aeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ca8912319a39eb83bbb1d278b0248ba4d285c7c930abfc2f7a203bc4e3485d2d770a228b41bb9e391b2df220a1eb979ad578b2968732766542daa0bde6338ff
|
7
|
+
data.tar.gz: e6f3570c0d8aaa850c0d7a2c7e60f6168622e06c8ed5679dfc35f18c7f33ca821a9ccb3fe1e7840b2c85d98a5ef6e2cbf3f70cebd84e8859db7213d7b772000d
|
data/lib/foreman_tasks_core.rb
CHANGED
@@ -1,10 +1,7 @@
|
|
1
1
|
# The goal of ForemanTasksCore is to collect parts of foreman-tasks
|
2
2
|
# that can be shared by the Foreman server and Foreman proxy
|
3
3
|
|
4
|
-
require 'dynflow'
|
5
4
|
require 'foreman_tasks_core/settings_loader'
|
6
|
-
require 'foreman_tasks_core/otp_manager'
|
7
|
-
require 'foreman_tasks_core/ticker'
|
8
5
|
|
9
6
|
module ForemanTasksCore
|
10
7
|
def self.dynflow_world
|
@@ -19,8 +16,4 @@ module ForemanTasksCore
|
|
19
16
|
def self.dynflow_setup(dynflow_world)
|
20
17
|
@dynflow_world = dynflow_world
|
21
18
|
end
|
22
|
-
|
23
|
-
def self.silent_dead_letter_matchers
|
24
|
-
[::Dynflow::DeadLetterSilencer::Matcher.new(ForemanTasksCore::Ticker)]
|
25
|
-
end
|
26
19
|
end
|
@@ -10,8 +10,6 @@ module ForemanTasksCore
|
|
10
10
|
init_run
|
11
11
|
when Runner::Update
|
12
12
|
process_update(event)
|
13
|
-
when Runner::ExternalEvent
|
14
|
-
process_external_event(event)
|
15
13
|
when ::Dynflow::Action::Cancellable::Cancel
|
16
14
|
kill_run
|
17
15
|
else
|
@@ -54,11 +52,6 @@ module ForemanTasksCore
|
|
54
52
|
output[:exit_status] = update.exit_status
|
55
53
|
end
|
56
54
|
|
57
|
-
def process_external_event(event)
|
58
|
-
runner_dispatcher.external_event(output[:runner_id], event)
|
59
|
-
suspend
|
60
|
-
end
|
61
|
-
|
62
55
|
def process_update(update)
|
63
56
|
output[:result].concat(update.continuous_output.raw_outputs)
|
64
57
|
if update.exit_status
|
@@ -10,7 +10,7 @@ module ForemanTasksCore
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class RunnerActor < ::Dynflow::Actor
|
13
|
-
def initialize(dispatcher, suspended_action, runner, clock, logger,
|
13
|
+
def initialize(dispatcher, suspended_action, runner, clock, logger, options = {})
|
14
14
|
@dispatcher = dispatcher
|
15
15
|
@clock = clock
|
16
16
|
@ticker = dispatcher.ticker
|
@@ -18,6 +18,7 @@ module ForemanTasksCore
|
|
18
18
|
@suspended_action = suspended_action
|
19
19
|
@runner = runner
|
20
20
|
@finishing = false
|
21
|
+
@refresh_interval = options[:refresh_interval] || 1
|
21
22
|
end
|
22
23
|
|
23
24
|
def on_envelope(*args)
|
@@ -73,10 +74,6 @@ module ForemanTasksCore
|
|
73
74
|
finish_termination
|
74
75
|
end
|
75
76
|
|
76
|
-
def external_event(_event)
|
77
|
-
refresh_runner
|
78
|
-
end
|
79
|
-
|
80
77
|
private
|
81
78
|
|
82
79
|
def set_timeout
|
@@ -103,7 +100,7 @@ module ForemanTasksCore
|
|
103
100
|
@mutex = Mutex.new
|
104
101
|
@clock = clock
|
105
102
|
@logger = logger
|
106
|
-
@ticker = ::ForemanTasksCore::Ticker.spawn('dispatcher-ticker', @clock, @logger
|
103
|
+
@ticker = ::ForemanTasksCore::Ticker.spawn('dispatcher-ticker', @clock, @logger)
|
107
104
|
@runner_actors = {}
|
108
105
|
@runner_suspended_actions = {}
|
109
106
|
end
|
@@ -150,21 +147,10 @@ module ForemanTasksCore
|
|
150
147
|
end
|
151
148
|
end
|
152
149
|
|
153
|
-
def external_event(runner_id, external_event)
|
154
|
-
synchronize do
|
155
|
-
runner_actor = @runner_actors[runner_id]
|
156
|
-
runner_actor.tell([:external_event, external_event]) if runner_actor
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
150
|
def handle_command_exception(*args)
|
161
151
|
synchronize { _handle_command_exception(*args) }
|
162
152
|
end
|
163
153
|
|
164
|
-
def refresh_interval
|
165
|
-
1
|
166
|
-
end
|
167
|
-
|
168
154
|
private
|
169
155
|
|
170
156
|
def _finish(runner_id)
|
@@ -2,11 +2,11 @@ module ForemanTasksCore
|
|
2
2
|
class Ticker < ::Dynflow::Actor
|
3
3
|
attr_reader :clock
|
4
4
|
|
5
|
-
def initialize(clock, logger
|
5
|
+
def initialize(clock, logger)
|
6
6
|
@clock = clock
|
7
7
|
@logger = logger
|
8
8
|
@events = []
|
9
|
-
@refresh_interval =
|
9
|
+
@refresh_interval = 1
|
10
10
|
plan_next_tick
|
11
11
|
end
|
12
12
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman-tasks-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.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: 2017-
|
11
|
+
date: 2017-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Common code used both at Forman and Foreman proxy regarding tasks
|
@@ -21,7 +21,6 @@ files:
|
|
21
21
|
- LICENSE
|
22
22
|
- lib/foreman_tasks_core.rb
|
23
23
|
- lib/foreman_tasks_core/continuous_output.rb
|
24
|
-
- lib/foreman_tasks_core/otp_manager.rb
|
25
24
|
- lib/foreman_tasks_core/runner.rb
|
26
25
|
- lib/foreman_tasks_core/runner/action.rb
|
27
26
|
- lib/foreman_tasks_core/runner/base.rb
|
@@ -51,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
50
|
version: '0'
|
52
51
|
requirements: []
|
53
52
|
rubyforge_project:
|
54
|
-
rubygems_version: 2.
|
53
|
+
rubygems_version: 2.4.5
|
55
54
|
signing_key:
|
56
55
|
specification_version: 4
|
57
56
|
summary: Common code used both at Forman and Foreman proxy regarding tasks
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'base64'
|
2
|
-
require 'securerandom'
|
3
|
-
|
4
|
-
module ForemanTasksCore
|
5
|
-
class OtpManager
|
6
|
-
class << self
|
7
|
-
def generate_otp(username)
|
8
|
-
otp = SecureRandom.hex
|
9
|
-
passwords[username] = otp.to_s
|
10
|
-
end
|
11
|
-
|
12
|
-
def drop_otp(username, password)
|
13
|
-
passwords.delete(username) if passwords[username] == password
|
14
|
-
end
|
15
|
-
|
16
|
-
def passwords
|
17
|
-
@password ||= {}
|
18
|
-
end
|
19
|
-
|
20
|
-
def authenticate(hash)
|
21
|
-
plain = Base64.decode64(hash)
|
22
|
-
username, otp = plain.split(':', 2)
|
23
|
-
drop_otp(username, otp)
|
24
|
-
end
|
25
|
-
|
26
|
-
def tokenize(username, password)
|
27
|
-
Base64.strict_encode64("#{username}:#{password}")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|