omf_rc_shm 0.0.1 → 0.1.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 +8 -8
- data/lib/omf_rc/resource_proxy/scheduled_application.rb +33 -6
- data/lib/omf_rc_shm/version.rb +1 -1
- data/omf_rc_shm.gemspec +1 -0
- data/test/scheduled_app_tester.rb +4 -3
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MGVlZDhmOTQ2NzU5MWZhOTg0ODQ0MjAyMmVkODU0Mzg0ZDY3YmUyMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGE1NmNkOWJmMDFjMGNhOWMxNWU1ZGY3YmIyYTZjODE4NmQxNzQwYg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjQwYWVkNjUwYzVlMWUwNTM3NTVkNzhlYzJjNDNiMjIxNWFjOTZkMmRhYTY2
|
10
|
+
MTg1Mjg2NzI0MWZhODVlNjU4MjAwNjQ3ZWNkYjViNjg2NTllM2RlOGFhZjYw
|
11
|
+
ZjAzYjA3ZjEwMGI4ZjgwNGUxNzUwNDUxYjlhZmYyODUyMTNiOTI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTE2MTMxYTgzMmNhMzdiNDZjOTc4YmQ0NzFmNzQ3Y2NkNjAyODczNmEzMjQ4
|
14
|
+
NzdjOGMzODY4YWQzZmIxOGI5YzYzMDljOTYzODZkMGE4NjIzNTJmY2QxMzEw
|
15
|
+
NDFhNWZjYmY0OGI0ZmE4MmJhYmUyYjNhZTBjMTBjNDk1M2EyNjY=
|
@@ -96,7 +96,7 @@ module OmfRc::ResourceProxy::ScheduledApplication
|
|
96
96
|
property :oml, :default => Hashie::Mash.new
|
97
97
|
property :oml_logfile, :default => nil
|
98
98
|
property :oml_loglevel, :default => nil
|
99
|
-
property :schedule, :default =>
|
99
|
+
property :schedule, :default => "now"
|
100
100
|
property :timeout, :default => 0
|
101
101
|
property :timeout_kill_signal, :default => 'TERM'
|
102
102
|
property :file_change_listener, :default => nil
|
@@ -304,15 +304,32 @@ module OmfRc::ResourceProxy::ScheduledApplication
|
|
304
304
|
elsif res.property.schedule.nil?
|
305
305
|
res.log_inform_warn "No schedule given!"
|
306
306
|
else
|
307
|
+
# "now" schedules job to run once, two minutes from now
|
308
|
+
if res.property.schedule == "now"
|
309
|
+
t = Time.now()+120
|
310
|
+
res.property.schedule = t.strftime("%-M %-H %-d %-m *")
|
311
|
+
end
|
307
312
|
Dir.mkdir(res.property.app_log_dir) if !Dir.exist?(res.property.app_log_dir)
|
308
313
|
stderr_file = "#{res.property.app_log_dir}/#{res.property.app_id}.err.log"
|
309
314
|
stdout_file = "#{res.property.app_log_dir}/#{res.property.app_id}.out.log"
|
315
|
+
pid_file = "#{res.property.app_log_dir}/#{res.property.app_id}.pid.log"
|
310
316
|
File.delete(stderr_file) if File.exist?(stderr_file)
|
311
317
|
File.delete(stdout_file) if File.exist?(stdout_file)
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
318
|
+
File.delete(pid_file) if File.exist?(pid_file)
|
319
|
+
#cmd = "#{res.build_command_line} 2>>#{stderr_file} 1>>#{stdout_file}; echo \"Application exited with code: $? \" >>#{stderr_file}"
|
320
|
+
cmd = "ruby -e 'pid = spawn(\"#{res.build_command_line}\", :out=>[\"#{stdout_file}\", \"a\"], :err=>[\"#{stderr_file}\", \"a\"])
|
321
|
+
`echo \#{pid} >> #{pid_file}`
|
322
|
+
fork {
|
323
|
+
sleep #{res.property.timeout}
|
324
|
+
Process.kill(\"#{res.property.timeout_kill_signal}\", pid)
|
325
|
+
} if #{res.property.timeout} > 0
|
326
|
+
Process.waitpid(pid)
|
327
|
+
`echo Process \#{pid} exited with code: \#{$?.exitstatus} >> #{stderr_file}`'"
|
328
|
+
cmd.gsub!(/[\n]+/, ";");
|
329
|
+
# cmd = "#{res.build_command_line} 2>>#{stderr_file} 1>>#{stdout_file};"
|
330
|
+
# if res.property.timeout > 0
|
331
|
+
# cmd = "timeout -s #{res.property.timeout_kill_signal} #{res.property.timeout} #{cmd}"
|
332
|
+
# end
|
316
333
|
info "Adding cron job for '#{res.property.app_id}' with schedule '#{res.property.schedule}' and command '#{cmd}'"
|
317
334
|
CronEdit::Crontab.Add res.property.app_id, "#{res.property.schedule} #{cmd}"
|
318
335
|
# ExecApp.new(res.property.app_id,
|
@@ -332,7 +349,17 @@ module OmfRc::ResourceProxy::ScheduledApplication
|
|
332
349
|
data = IO.read(file,nil,res.property.file_read_offset[file])
|
333
350
|
res.property.file_read_offset[file]+=data.length
|
334
351
|
data.split(/\r?\n/).each do |line|
|
335
|
-
event_type =
|
352
|
+
event_type = "STDOUT"
|
353
|
+
if file.include? ".err.log"
|
354
|
+
event_type = "STDERR"
|
355
|
+
if line.include? "exited with code:"
|
356
|
+
if line.split(":").last.to_i == 0
|
357
|
+
event_type = "DONE.OK"
|
358
|
+
else
|
359
|
+
event_type = "DONE.ERROR"
|
360
|
+
end
|
361
|
+
end
|
362
|
+
end
|
336
363
|
res.process_event(res, event_type, res.property.app_id, line)
|
337
364
|
end
|
338
365
|
end
|
data/lib/omf_rc_shm/version.rb
CHANGED
data/omf_rc_shm.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_development_dependency "bundler", "~> 1.3"
|
21
21
|
spec.add_development_dependency "rake"
|
22
22
|
spec.add_runtime_dependency "omf_rc", "~> 6.0.5"
|
23
|
+
spec.add_runtime_dependency "json-jwt"
|
23
24
|
spec.add_runtime_dependency "cronedit"
|
24
25
|
spec.add_runtime_dependency "listen"
|
25
26
|
end
|
@@ -19,10 +19,11 @@ def run_test(app)
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# Configure the 'binary_path' and 'parameters' properties of the App Proxy
|
22
|
-
app.configure(binary_path: "
|
22
|
+
app.configure(binary_path: "sleep 5",
|
23
23
|
oml_configfile: "/Users/cdw/tempo/omf_rc_shm/README.md",
|
24
|
+
timeout: 3,
|
24
25
|
# use_oml: true,
|
25
|
-
schedule: "
|
26
|
+
schedule: "now")
|
26
27
|
|
27
28
|
# Start the application 2 seconds later
|
28
29
|
OmfCommon.eventloop.after 1 do
|
@@ -30,7 +31,7 @@ def run_test(app)
|
|
30
31
|
end
|
31
32
|
|
32
33
|
# Stop the application another 10 seconds later
|
33
|
-
OmfCommon.eventloop.after
|
34
|
+
OmfCommon.eventloop.after 200 do
|
34
35
|
app.configure(state: :unscheduled)
|
35
36
|
end
|
36
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_rc_shm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NICTA
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 6.0.5
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json-jwt
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: cronedit
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|