lobster 0.2.5 → 0.2.6
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/lib/lobster/job.rb +44 -16
- data/lib/lobster/job_list.rb +1 -1
- data/lib/lobster/version.rb +1 -1
- metadata +2 -2
data/lib/lobster/job.rb
CHANGED
@@ -8,21 +8,6 @@ module Lobster
|
|
8
8
|
@name = name
|
9
9
|
Lobster.logger.info "Job #{name} created."
|
10
10
|
@pid = nil
|
11
|
-
|
12
|
-
rout, @wout = IO.pipe
|
13
|
-
rerr, @werr = IO.pipe
|
14
|
-
|
15
|
-
Thread.new do
|
16
|
-
while (line = rout.gets)
|
17
|
-
Lobster.logger.info "#{@name}: #{line.chomp}"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Thread.new do
|
22
|
-
while (line = rerr.gets)
|
23
|
-
Lobster.logger.warn "#{@name}: #{line.chomp}"
|
24
|
-
end
|
25
|
-
end
|
26
11
|
end
|
27
12
|
|
28
13
|
def reload(options, lobster_dir)
|
@@ -62,6 +47,7 @@ module Lobster
|
|
62
47
|
Lobster.logger.error "Job #{@name} Failed with status #{$?}"
|
63
48
|
end
|
64
49
|
@pid = nil
|
50
|
+
close_pipes
|
65
51
|
@next_run = Time.now + @delay*60
|
66
52
|
false
|
67
53
|
else
|
@@ -70,13 +56,16 @@ module Lobster
|
|
70
56
|
end
|
71
57
|
|
72
58
|
def run
|
59
|
+
create_pipes
|
60
|
+
|
73
61
|
Lobster.logger.info "Starting job #{@name}"
|
74
|
-
command_line = @user ? "sudo -
|
62
|
+
command_line = @user ? "sudo -nu #{@user} -- sh -lc 'cd #{@directory}; #{@command}'" : @command
|
75
63
|
|
76
64
|
begin
|
77
65
|
@pid = spawn(command_line, :out=>@wout, :err=>@werr, :chdir=> @directory)
|
78
66
|
rescue Exception => e
|
79
67
|
Lobster.logger.error "#{e}: error when starting job #{@name}"
|
68
|
+
close_pipes
|
80
69
|
@next_run = Time.now + 10
|
81
70
|
end
|
82
71
|
end
|
@@ -92,5 +81,44 @@ module Lobster
|
|
92
81
|
Process.wait @pid
|
93
82
|
end
|
94
83
|
end
|
84
|
+
|
85
|
+
def destroy
|
86
|
+
Thread.new do
|
87
|
+
Lobster.logger.info "Job #{name} being destroyed."
|
88
|
+
destroy_time = Time.now
|
89
|
+
while running?
|
90
|
+
sleep 60
|
91
|
+
if ((delay = Time.now - destroy_time) > 60*60)
|
92
|
+
Lobster.logger.warn "Job #{name} has not been destroyed after #{delay} seconds."
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def create_pipes
|
101
|
+
@rout, @wout = IO.pipe
|
102
|
+
@rerr, @werr = IO.pipe
|
103
|
+
|
104
|
+
Thread.new do
|
105
|
+
while (line = @rout.gets)
|
106
|
+
Lobster.logger.info "#{@name}: #{line.chomp}"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
Thread.new do
|
111
|
+
while (line = @rerr.gets)
|
112
|
+
Lobster.logger.warn "#{@name}: #{line.chomp}"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def close_pipes
|
118
|
+
@wout.close
|
119
|
+
@rout.close
|
120
|
+
@werr.close
|
121
|
+
@rerr.close
|
122
|
+
end
|
95
123
|
end
|
96
124
|
end
|
data/lib/lobster/job_list.rb
CHANGED
data/lib/lobster/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lobster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
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:
|
12
|
+
date: 2013-05-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: daemons
|