foreman-tasks 0.10.0 → 0.10.1
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/.rubocop_todo.yml +0 -2
- data/app/assets/javascripts/{trigger_form.js → foreman_tasks/trigger_form.js} +0 -0
- data/app/controllers/foreman_tasks/recurring_logics_controller.rb +6 -1
- data/app/controllers/foreman_tasks/tasks_controller.rb +16 -2
- data/app/lib/actions/proxy_action.rb +7 -0
- data/app/models/foreman_tasks/task/dynflow_task.rb +19 -4
- data/app/models/foreman_tasks/task/summarizer.rb +3 -1
- data/app/views/common/_trigger_form.html.erb +1 -1
- data/app/views/foreman_tasks/recurring_logics/index.html.erb +1 -2
- data/app/views/foreman_tasks/tasks/dashboard/_latest_tasks_in_error_warning.html.erb +1 -1
- data/app/views/foreman_tasks/tasks/dashboard/_tasks_status.html.erb +2 -0
- data/app/views/foreman_tasks/tasks/index.html.erb +1 -2
- data/config/routes.rb +1 -0
- data/foreman-tasks.gemspec +1 -3
- data/lib/foreman_tasks.rb +2 -1
- data/lib/foreman_tasks/dynflow.rb +2 -108
- data/lib/foreman_tasks/dynflow/configuration.rb +7 -142
- data/lib/foreman_tasks/dynflow/persistence.rb +3 -2
- data/lib/foreman_tasks/engine.rb +2 -2
- data/lib/foreman_tasks/version.rb +1 -1
- data/test/controllers/recurring_logics_controller_test.rb +14 -0
- data/test/controllers/tasks_controller_test.rb +17 -0
- data/test/unit/otp_manager_test.rb +70 -0
- metadata +12 -43
- data/bin/dynflow-executor +0 -71
- data/bin/foreman-tasks +0 -5
- data/deploy/foreman-tasks.init +0 -231
- data/deploy/foreman-tasks.service +0 -16
- data/deploy/foreman-tasks.sysconfig +0 -26
- data/lib/foreman_tasks/dynflow/daemon.rb +0 -143
- data/lib/foreman_tasks/tasks/dynflow.rake +0 -7
- data/test/unit/daemon_test.rb +0 -86
@@ -1,5 +1,5 @@
|
|
1
1
|
module ForemanTasks
|
2
|
-
#
|
2
|
+
# Wrap the Dynflow persistence to reflect the changes to execution plan
|
3
3
|
# in the Task model. This is probably a temporary solution and
|
4
4
|
# Dynflow will probably get more events-based API but it should be enought
|
5
5
|
# for start, until the requiements on the API are clear enough.
|
@@ -11,7 +11,8 @@ module ForemanTasks
|
|
11
11
|
begin
|
12
12
|
on_execution_plan_save(execution_plan_id, value)
|
13
13
|
rescue => e
|
14
|
-
Foreman::Logging.exception('Error on on_execution_plan_save event', e,
|
14
|
+
Foreman::Logging.exception('Error on on_execution_plan_save event', e,
|
15
|
+
:logger => 'dynflow')
|
15
16
|
end
|
16
17
|
end
|
17
18
|
ensure
|
data/lib/foreman_tasks/engine.rb
CHANGED
@@ -20,7 +20,7 @@ module ForemanTasks
|
|
20
20
|
assets_to_precompile =
|
21
21
|
Dir.chdir(root) do
|
22
22
|
Dir['app/assets/javascripts/**/*', 'app/assets/stylesheets/**/*'].map do |f|
|
23
|
-
f.split(File::SEPARATOR, 4).last
|
23
|
+
f.split(File::SEPARATOR, 4).last
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -58,7 +58,7 @@ module ForemanTasks
|
|
58
58
|
security_block :foreman_tasks do |_map|
|
59
59
|
permission :view_foreman_tasks, { :'foreman_tasks/tasks' => [:auto_complete_search, :sub_tasks, :index, :show],
|
60
60
|
:'foreman_tasks/api/tasks' => [:bulk_search, :show, :index, :summary] }, :resource_type => ForemanTasks::Task.name
|
61
|
-
permission :edit_foreman_tasks, { :'foreman_tasks/tasks' => [:resume, :unlock, :force_unlock, :cancel_step, :cancel],
|
61
|
+
permission :edit_foreman_tasks, { :'foreman_tasks/tasks' => [:resume, :unlock, :force_unlock, :cancel_step, :cancel, :abort],
|
62
62
|
:'foreman_tasks/api/tasks' => [:bulk_resume] }, :resource_type => ForemanTasks::Task.name
|
63
63
|
|
64
64
|
permission :create_recurring_logics, {}, :resource_type => ForemanTasks::RecurringLogic.name
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'foreman_tasks_test_helper'
|
2
|
+
|
3
|
+
module ForemanTasks
|
4
|
+
class RecurringLogicsControllerTest < ActionController::TestCase
|
5
|
+
basic_index_test('recurring_logics')
|
6
|
+
basic_pagination_per_page_test
|
7
|
+
|
8
|
+
# rubocop:disable Style/AccessorMethodName
|
9
|
+
def get_factory_name
|
10
|
+
:recurring_logic
|
11
|
+
end
|
12
|
+
# rubocop:enable Style/AccessorMethodName
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'foreman_tasks_test_helper'
|
2
|
+
|
3
|
+
module ForemanTasks
|
4
|
+
class TasksControllerTest < ActionController::TestCase
|
5
|
+
describe ForemanTasks::TasksController do
|
6
|
+
basic_index_test('tasks')
|
7
|
+
basic_pagination_per_page_test
|
8
|
+
basic_pagination_rendered_test
|
9
|
+
|
10
|
+
# rubocop:disable Style/AccessorMethodName
|
11
|
+
def get_factory_name
|
12
|
+
:dynflow_task
|
13
|
+
end
|
14
|
+
# rubocop:enable Style/AccessorMethodName
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'foreman_tasks_test_helper'
|
2
|
+
require 'foreman_tasks_core/otp_manager'
|
3
|
+
|
4
|
+
module ForemanTasksCore
|
5
|
+
class OtpManagerTest < ActiveSupport::TestCase
|
6
|
+
class TestOtpManager < OtpManager
|
7
|
+
def self.reset!
|
8
|
+
@passwords = nil
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
before do
|
13
|
+
TestOtpManager.reset!
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:username) { 'myuser' }
|
17
|
+
let(:password) { '123456789' }
|
18
|
+
let(:base64) { 'bXl1c2VyOjEyMzQ1Njc4OQ==' }
|
19
|
+
|
20
|
+
it 'it doesn\'t raise when no passwords were generated yet' do
|
21
|
+
assert_nil TestOtpManager.drop_otp('missing', 'password')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'generates OTPs using SecureRandom.hex and converts them to strings' do
|
25
|
+
otp = 4
|
26
|
+
SecureRandom.stubs(:hex).returns(otp)
|
27
|
+
TestOtpManager.generate_otp(username).must_equal otp.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'removes OTP only when correct username and password is provided' do
|
31
|
+
otp = TestOtpManager.generate_otp(username)
|
32
|
+
assert_nil TestOtpManager.drop_otp('wrong_username', 'wrong_password')
|
33
|
+
assert_nil TestOtpManager.drop_otp(username, 'wrong_password')
|
34
|
+
assert_nil TestOtpManager.drop_otp('wrong_username', otp)
|
35
|
+
TestOtpManager.drop_otp(username, otp).must_equal otp
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'parses the hash correctly' do
|
39
|
+
SecureRandom.stubs(:hex).returns(password)
|
40
|
+
TestOtpManager.expects(:drop_otp).with(username, password.to_s)
|
41
|
+
TestOtpManager.authenticate(base64)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'authenticates correctly' do
|
45
|
+
SecureRandom.stubs(:hex).returns(password)
|
46
|
+
generated = TestOtpManager.generate_otp(username)
|
47
|
+
|
48
|
+
TestOtpManager.authenticate(base64).must_equal generated
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'OTPs can be used only once' do
|
52
|
+
SecureRandom.stubs(:hex).returns(password)
|
53
|
+
generated = TestOtpManager.generate_otp(username)
|
54
|
+
|
55
|
+
TestOtpManager.authenticate(base64).must_equal generated
|
56
|
+
assert_nil TestOtpManager.authenticate(base64)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'creates token from username and password correctly' do
|
60
|
+
TestOtpManager.tokenize(username, password).must_equal base64
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'overwrites old OTP when generating a new one for the same username' do
|
64
|
+
old = TestOtpManager.generate_otp(username)
|
65
|
+
new = TestOtpManager.generate_otp(username)
|
66
|
+
assert_nil TestOtpManager.drop_otp(username, old)
|
67
|
+
TestOtpManager.drop_otp(username, new).must_equal new
|
68
|
+
end
|
69
|
+
end
|
70
|
+
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: 0.10.
|
4
|
+
version: 0.10.1
|
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-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: foreman-tasks-core
|
@@ -30,28 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.8.
|
33
|
+
version: 0.8.26
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.8.
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: sequel
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
40
|
+
version: 0.8.26
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: sinatra
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +52,6 @@ dependencies:
|
|
66
52
|
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: daemons
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
56
|
name: parse-cron
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,7 +100,7 @@ files:
|
|
128
100
|
- Gemfile
|
129
101
|
- LICENSE
|
130
102
|
- README.md
|
131
|
-
- app/assets/javascripts/trigger_form.js
|
103
|
+
- app/assets/javascripts/foreman_tasks/trigger_form.js
|
132
104
|
- app/assets/stylesheets/foreman_tasks/application.css.scss
|
133
105
|
- app/assets/stylesheets/foreman_tasks/tasks.css.scss
|
134
106
|
- app/assets/stylesheets/foreman_tasks/trigger_form.css
|
@@ -195,8 +167,6 @@ files:
|
|
195
167
|
- app/views/foreman_tasks/tasks/dashboard/_tasks_status.html.erb
|
196
168
|
- app/views/foreman_tasks/tasks/index.html.erb
|
197
169
|
- app/views/foreman_tasks/tasks/show.html.erb
|
198
|
-
- bin/dynflow-executor
|
199
|
-
- bin/foreman-tasks
|
200
170
|
- config/foreman-tasks.yaml.example
|
201
171
|
- config/routes.rb
|
202
172
|
- db/migrate/20131205204140_create_foreman_tasks.rb
|
@@ -215,9 +185,6 @@ files:
|
|
215
185
|
- db/seeds.d/20-foreman_tasks_permissions.rb
|
216
186
|
- db/seeds.d/60-dynflow_proxy_feature.rb
|
217
187
|
- db/seeds.d/61-foreman_tasks_bookmarks.rb
|
218
|
-
- deploy/foreman-tasks.init
|
219
|
-
- deploy/foreman-tasks.service
|
220
|
-
- deploy/foreman-tasks.sysconfig
|
221
188
|
- extra/dynflow-debug.sh
|
222
189
|
- extra/dynflow-executor.example
|
223
190
|
- foreman-tasks.gemspec
|
@@ -228,12 +195,10 @@ files:
|
|
228
195
|
- lib/foreman_tasks/dynflow.rb
|
229
196
|
- lib/foreman_tasks/dynflow/configuration.rb
|
230
197
|
- lib/foreman_tasks/dynflow/console_authorizer.rb
|
231
|
-
- lib/foreman_tasks/dynflow/daemon.rb
|
232
198
|
- lib/foreman_tasks/dynflow/persistence.rb
|
233
199
|
- lib/foreman_tasks/engine.rb
|
234
200
|
- lib/foreman_tasks/task_error.rb
|
235
201
|
- lib/foreman_tasks/tasks/cleanup.rake
|
236
|
-
- lib/foreman_tasks/tasks/dynflow.rake
|
237
202
|
- lib/foreman_tasks/tasks/export_tasks.rake
|
238
203
|
- lib/foreman_tasks/test_extensions.rb
|
239
204
|
- lib/foreman_tasks/test_helpers.rb
|
@@ -248,6 +213,8 @@ files:
|
|
248
213
|
- script/rails
|
249
214
|
- test/controllers/api/recurring_logics_controller_test.rb
|
250
215
|
- test/controllers/api/tasks_controller_test.rb
|
216
|
+
- test/controllers/recurring_logics_controller_test.rb
|
217
|
+
- test/controllers/tasks_controller_test.rb
|
251
218
|
- test/factories/recurring_logic_factory.rb
|
252
219
|
- test/factories/task_factory.rb
|
253
220
|
- test/factories/triggering_factory.rb
|
@@ -259,8 +226,8 @@ files:
|
|
259
226
|
- test/unit/actions/proxy_action_test.rb
|
260
227
|
- test/unit/cleaner_test.rb
|
261
228
|
- test/unit/config/environment.rb
|
262
|
-
- test/unit/daemon_test.rb
|
263
229
|
- test/unit/dynflow_console_authorizer_test.rb
|
230
|
+
- test/unit/otp_manager_test.rb
|
264
231
|
- test/unit/proxy_selector_test.rb
|
265
232
|
- test/unit/recurring_logic_test.rb
|
266
233
|
- test/unit/task_groups_test.rb
|
@@ -285,13 +252,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
285
252
|
version: '0'
|
286
253
|
requirements: []
|
287
254
|
rubyforge_project:
|
288
|
-
rubygems_version: 2.
|
255
|
+
rubygems_version: 2.6.12
|
289
256
|
signing_key:
|
290
257
|
specification_version: 4
|
291
258
|
summary: Foreman plugin for showing tasks information for resoruces and users
|
292
259
|
test_files:
|
293
260
|
- test/controllers/api/recurring_logics_controller_test.rb
|
294
261
|
- test/controllers/api/tasks_controller_test.rb
|
262
|
+
- test/controllers/recurring_logics_controller_test.rb
|
263
|
+
- test/controllers/tasks_controller_test.rb
|
295
264
|
- test/factories/recurring_logic_factory.rb
|
296
265
|
- test/factories/task_factory.rb
|
297
266
|
- test/factories/triggering_factory.rb
|
@@ -303,8 +272,8 @@ test_files:
|
|
303
272
|
- test/unit/actions/proxy_action_test.rb
|
304
273
|
- test/unit/cleaner_test.rb
|
305
274
|
- test/unit/config/environment.rb
|
306
|
-
- test/unit/daemon_test.rb
|
307
275
|
- test/unit/dynflow_console_authorizer_test.rb
|
276
|
+
- test/unit/otp_manager_test.rb
|
308
277
|
- test/unit/proxy_selector_test.rb
|
309
278
|
- test/unit/recurring_logic_test.rb
|
310
279
|
- test/unit/task_groups_test.rb
|
data/bin/dynflow-executor
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'optparse'
|
4
|
-
|
5
|
-
class ArgvParser
|
6
|
-
attr_reader :options, :command
|
7
|
-
|
8
|
-
def initialize(argv, file)
|
9
|
-
@options = { foreman_root: Dir.pwd }
|
10
|
-
|
11
|
-
opts = OptionParser.new do |opts|
|
12
|
-
opts.banner = banner(file)
|
13
|
-
|
14
|
-
opts.on('-h', '--help', 'Show this message') do
|
15
|
-
puts opts
|
16
|
-
exit 1
|
17
|
-
end
|
18
|
-
opts.on('-f', '--foreman-root=PATH', "Path to Foreman Rails root path. By default '#{@options[:foreman_root]}'") do |path|
|
19
|
-
@options[:foreman_root] = path
|
20
|
-
end
|
21
|
-
opts.on('-c', '--executors-count=COUNT', 'Number of parallel executors to spawn. Overrides EXECUTORS_COUNT environment varaible.') do |count|
|
22
|
-
@options[:executors_count] = count.to_i
|
23
|
-
end
|
24
|
-
opts.on('-m', '--memory-limit=SIZE', 'Limits the amount of memory an executor can consume. Overrides EXECUTOR_MEMORY_LIMIT environment varaible. You can use kb, mb, gb') do |size|
|
25
|
-
@options[:memory_limit] = size
|
26
|
-
end
|
27
|
-
opts.on('--executor-memory-init-delay=SECONDS', 'Start memory polling after SECONDS. Overrides EXECUTOR_MEMORY_MONITOR_DELAY environment varaible.') do |seconds|
|
28
|
-
@options[:memory_init_delay] = seconds.to_i
|
29
|
-
end
|
30
|
-
opts.on('--executor-memory-polling-interval=SECONDS', 'Check for memory useage every SECONDS sec. Overrides EXECUTOR_MEMORY_MONITOR_INTERVAL environment varaible.') do |seconds|
|
31
|
-
@options[:memory_polling_interval] = seconds.to_i
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
args = opts.parse!(argv)
|
36
|
-
@command = args.first || 'run'
|
37
|
-
end
|
38
|
-
|
39
|
-
def banner(file)
|
40
|
-
banner = <<BANNER
|
41
|
-
Run Dynflow executor for Foreman tasks.
|
42
|
-
|
43
|
-
Usage: #{File.basename(file)} [options] ACTION"
|
44
|
-
|
45
|
-
ACTION can be one of:
|
46
|
-
|
47
|
-
* start - start the executor on background. It creates these files
|
48
|
-
in tmp/pid directory:
|
49
|
-
|
50
|
-
* dynflow_executor_monitor.pid - pid of monitor ensuring
|
51
|
-
the executor keeps running
|
52
|
-
* dynflow_executor.pid - pid of the executor itself
|
53
|
-
* dynflow_executor.output - stdout of the executor
|
54
|
-
* stop - stops the running executor
|
55
|
-
* restart - restarts the running executor
|
56
|
-
* run - run the executor in foreground
|
57
|
-
|
58
|
-
BANNER
|
59
|
-
banner
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# run the script if it's executed explicitly
|
64
|
-
if $PROGRAM_NAME == __FILE__
|
65
|
-
parser = ArgvParser.new(ARGV, $PROGRAM_NAME)
|
66
|
-
|
67
|
-
app_file = File.expand_path('./config/application', parser.options[:foreman_root])
|
68
|
-
require app_file
|
69
|
-
|
70
|
-
ForemanTasks::Dynflow::Daemon.new.run_background(parser.command, parser.options)
|
71
|
-
end
|
data/bin/foreman-tasks
DELETED
data/deploy/foreman-tasks.init
DELETED
@@ -1,231 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
#
|
3
|
-
# Init script for foreman-tasks
|
4
|
-
#
|
5
|
-
# chkconfig: - 88 12
|
6
|
-
# description: Init script for foreman-tasks
|
7
|
-
#
|
8
|
-
|
9
|
-
# Source function library.
|
10
|
-
. /etc/rc.d/init.d/functions
|
11
|
-
|
12
|
-
if [ -f /etc/sysconfig/foreman-tasks ]; then
|
13
|
-
. /etc/sysconfig/foreman-tasks
|
14
|
-
fi
|
15
|
-
|
16
|
-
prog=foreman-tasks
|
17
|
-
RETVAL=0
|
18
|
-
FOREMAN_USER=${FOREMAN_USER:-foreman}
|
19
|
-
FOREMAN_HOME=${FOREMAN_HOME:-/usr/share/foreman}
|
20
|
-
FOREMAN_DATA_DIR=${FOREMAN_DATA_DIR:-/var/lib/foreman}
|
21
|
-
FOREMAN_ENV=${FOREMAN_ENV:-production}
|
22
|
-
FOREMAN_TASK_PARAMS=${FOREMAN_TASK_PARAMS:--p foreman}
|
23
|
-
FOREMAN_PID_DIR=$FOREMAN_HOME/tmp/pids
|
24
|
-
FOREMAN_LOG_DIR=${FOREMAN_LOG_DIR:-/var/log/foreman}
|
25
|
-
TASK_SCRIPT="/usr/bin/foreman-tasks"
|
26
|
-
export RAILS_ENV=$FOREMAN_ENV
|
27
|
-
export FOREMAN_LOGGING=${FOREMAN_LOGGING:-warn}
|
28
|
-
export FOREMAN_LOGGING_SQL=${FOREMAN_LOGGING_SQL:-warn}
|
29
|
-
export RAILS_RELATIVE_URL_ROOT=$FOREMAN_PREFIX
|
30
|
-
export BUNDLER_EXT_GROUPS
|
31
|
-
export BUNDLER_EXT_NOSTRICT
|
32
|
-
export BUNDLER_EXT_HOME=$FOREMAN_HOME
|
33
|
-
|
34
|
-
print_higher() {
|
35
|
-
if [ 0$1 -gt 0$2 ]; then
|
36
|
-
echo $1
|
37
|
-
else
|
38
|
-
echo $2
|
39
|
-
fi
|
40
|
-
}
|
41
|
-
|
42
|
-
print_lower() {
|
43
|
-
if [ 0$1 -gt 0$2 ]; then
|
44
|
-
echo $2
|
45
|
-
else
|
46
|
-
echo $1
|
47
|
-
fi
|
48
|
-
}
|
49
|
-
|
50
|
-
status_of_one() {
|
51
|
-
PID_FILE="$1"
|
52
|
-
local RC
|
53
|
-
local RETVAL
|
54
|
-
if [ -f "$PID_FILE" ]; then
|
55
|
-
# set $pid
|
56
|
-
__pids_var_run NOT_USED $PID_FILE
|
57
|
-
RC=$?
|
58
|
-
if [ -n "$pid" -o 0$RC -gt 0 ]; then
|
59
|
-
RETVAL=2 # Program is dead and pid file exists
|
60
|
-
fi
|
61
|
-
#check if proces with pid from the file is running
|
62
|
-
if checkpid $pid; then
|
63
|
-
echo "running."
|
64
|
-
RETVAL=0
|
65
|
-
else
|
66
|
-
echo "not running."
|
67
|
-
RETVAL=1
|
68
|
-
fi
|
69
|
-
else
|
70
|
-
echo "not running."
|
71
|
-
RETVAL=3
|
72
|
-
fi
|
73
|
-
return $RETVAL
|
74
|
-
}
|
75
|
-
|
76
|
-
kstatus() {
|
77
|
-
RETVAL=0
|
78
|
-
SECONDVAL=256
|
79
|
-
echo -n "dynflow_executor is "
|
80
|
-
status_of_one $FOREMAN_PID_DIR/dynflow_executor.pid
|
81
|
-
RC=$?
|
82
|
-
RETVAL=$( print_higher $RC $RETVAL )
|
83
|
-
SECONDVAL=$( print_lower $RC $SECONDVAL )
|
84
|
-
echo -n "dynflow_executor_monitor is "
|
85
|
-
status_of_one $FOREMAN_PID_DIR/dynflow_executor_monitor.pid
|
86
|
-
RC=$?
|
87
|
-
RETVAL=$( print_higher $RC $RETVAL )
|
88
|
-
SECONDVAL=$( print_lower $RC $SECONDVAL )
|
89
|
-
if [ 0$SECONDVAL -eq 0 -a 0$RETVAL -gt 0 ]; then
|
90
|
-
# some is running, some not
|
91
|
-
return 10
|
92
|
-
else
|
93
|
-
return $RETVAL
|
94
|
-
fi
|
95
|
-
}
|
96
|
-
|
97
|
-
status_q() {
|
98
|
-
kstatus &> /dev/null
|
99
|
-
return $?
|
100
|
-
}
|
101
|
-
|
102
|
-
start() {
|
103
|
-
|
104
|
-
echo -n $"Starting $prog: "
|
105
|
-
status_q
|
106
|
-
STATUS=$?
|
107
|
-
if [ 0$STATUS -eq 0 ]; then
|
108
|
-
echo -n $"$prog is already running. "
|
109
|
-
RETVAL=0
|
110
|
-
echo_success
|
111
|
-
elif [ 0$STATUS -eq 10 ]; then
|
112
|
-
echo -n $"Some processes of $prog is already running. Some not. Please stop $prog first."
|
113
|
-
RETVAL=10
|
114
|
-
echo_failure
|
115
|
-
else
|
116
|
-
# rails expects you to run from the root of the app
|
117
|
-
pushd ${FOREMAN_HOME} >/dev/null
|
118
|
-
# start jobs
|
119
|
-
runuser -s /bin/bash - ${FOREMAN_USER} -c "\
|
120
|
-
BUNDLER_EXT_NOSTRICT='$BUNDLER_EXT_NOSTRICT' \
|
121
|
-
BUNDLER_EXT_HOME='$BUNDLER_EXT_HOME' \
|
122
|
-
RAILS_RELATIVE_URL_ROOT='$RAILS_RELATIVE_URL_ROOT' \
|
123
|
-
RAILS_ENV='$RAILS_ENV' \
|
124
|
-
FOREMAN_LOGGING='$FOREMAN_LOGGING' \
|
125
|
-
FOREMAN_LOGGING_SQL='$FOREMAN_LOGGING_SQL' \
|
126
|
-
$TASK_SCRIPT $FOREMAN_TASK_PARAMS -m -n $FOREMAN_TASK_WORKERS start &>>${FOREMAN_LOG_DIR}/jobs-startup.log"
|
127
|
-
RETVAL=$?
|
128
|
-
if [ $RETVAL = 0 ]; then
|
129
|
-
echo_success
|
130
|
-
else
|
131
|
-
echo_failure
|
132
|
-
fi
|
133
|
-
popd >/dev/null
|
134
|
-
fi
|
135
|
-
|
136
|
-
echo
|
137
|
-
return $RETVAL
|
138
|
-
}
|
139
|
-
|
140
|
-
stop() {
|
141
|
-
|
142
|
-
status_q
|
143
|
-
STATUS=$?
|
144
|
-
if [ 0$STATUS -eq 0 -o 0$STATUS -eq 10 ]; then
|
145
|
-
# rails expects you to run from the root of the app
|
146
|
-
pushd ${FOREMAN_HOME} >/dev/null
|
147
|
-
runuser -s /bin/bash - ${FOREMAN_USER} -c "\
|
148
|
-
BUNDLER_EXT_NOSTRICT='$BUNDLER_EXT_NOSTRICT' \
|
149
|
-
BUNDLER_EXT_HOME='$BUNDLER_EXT_HOME' \
|
150
|
-
RAILS_RELATIVE_URL_ROOT='$RAILS_RELATIVE_URL_ROOT' \
|
151
|
-
RAILS_ENV='$RAILS_ENV' \
|
152
|
-
FOREMAN_LOGGING='$FOREMAN_LOGGING' \
|
153
|
-
FOREMAN_LOGGING_SQL='$FOREMAN_LOGGING_SQL' \
|
154
|
-
$TASK_SCRIPT $FOREMAN_TASK_PARAMS -m -n $FOREMAN_TASK_WORKERS stop &>>${FOREMAN_LOG_DIR}/jobs-startup.log"
|
155
|
-
if [ -f $FOREMAN_PID_DIR/dynflow_executor_monitor.pid ]; then
|
156
|
-
echo -n $"Stopping dynflow_executor_monitor: "
|
157
|
-
killproc -p $FOREMAN_PID_DIR/dynflow_executor_monitor.pid
|
158
|
-
echo
|
159
|
-
fi
|
160
|
-
if [ -f $FOREMAN_PID_DIR/dynflow_executor.pid ]; then
|
161
|
-
echo -n $"Stopping dynflow_executor: "
|
162
|
-
killproc -p $FOREMAN_PID_DIR/dynflow_executor.pid
|
163
|
-
echo
|
164
|
-
fi
|
165
|
-
popd >/dev/null
|
166
|
-
RETVAL=0
|
167
|
-
else
|
168
|
-
RETVAL=0
|
169
|
-
echo -n "Stopping $prog: "
|
170
|
-
echo_failure
|
171
|
-
echo
|
172
|
-
fi
|
173
|
-
|
174
|
-
return $RETVAL
|
175
|
-
}
|
176
|
-
|
177
|
-
restart() {
|
178
|
-
stop
|
179
|
-
start
|
180
|
-
}
|
181
|
-
|
182
|
-
condstop() {
|
183
|
-
status_q
|
184
|
-
STATUS=$?
|
185
|
-
if [ 0$STATUS -eq 0 -o 0$STATUS -eq 10 ]; then
|
186
|
-
stop
|
187
|
-
else
|
188
|
-
RETVAL=0
|
189
|
-
fi
|
190
|
-
}
|
191
|
-
|
192
|
-
condrestart() {
|
193
|
-
status_q
|
194
|
-
STATUS=$?
|
195
|
-
if [ 0$STATUS -eq 0 -o 0$STATUS -eq 10 ]; then
|
196
|
-
restart
|
197
|
-
else
|
198
|
-
RETVAL=0
|
199
|
-
fi
|
200
|
-
}
|
201
|
-
|
202
|
-
case "$1" in
|
203
|
-
start)
|
204
|
-
start
|
205
|
-
;;
|
206
|
-
stop)
|
207
|
-
stop
|
208
|
-
;;
|
209
|
-
restart)
|
210
|
-
restart
|
211
|
-
;;
|
212
|
-
condrestart|try-restart)
|
213
|
-
condrestart
|
214
|
-
;;
|
215
|
-
condstop)
|
216
|
-
condstop
|
217
|
-
;;
|
218
|
-
status)
|
219
|
-
kstatus
|
220
|
-
RETVAL=$?
|
221
|
-
;;
|
222
|
-
*)
|
223
|
-
echo "Usage: {start|stop|restart|condrestart|condstop|status}"
|
224
|
-
exit 1
|
225
|
-
;;
|
226
|
-
esac
|
227
|
-
|
228
|
-
exit $RETVAL
|
229
|
-
|
230
|
-
# vim:set sw=4 ts=4 et:
|
231
|
-
|