lobster 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|