rexec 1.5.0 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/lib/rexec/daemon/base.rb +6 -6
- data/lib/rexec/daemon/controller.rb +18 -15
- data/lib/rexec/version.rb +1 -1
- data/test/test_remote_server.rb +1 -2
- metadata +22 -3
data/Gemfile
CHANGED
data/lib/rexec/daemon/base.rb
CHANGED
@@ -53,7 +53,7 @@ module RExec
|
|
53
53
|
|
54
54
|
# The directory the daemon will run in.
|
55
55
|
def self.working_directory
|
56
|
-
|
56
|
+
@@base_directory
|
57
57
|
end
|
58
58
|
|
59
59
|
# Return the directory to store log files in.
|
@@ -63,7 +63,7 @@ module RExec
|
|
63
63
|
|
64
64
|
# Standard log file for stdout and stderr.
|
65
65
|
def self.log_file_path
|
66
|
-
File.join(log_directory, "
|
66
|
+
File.join(log_directory, "#{daemon_name}.log")
|
67
67
|
end
|
68
68
|
|
69
69
|
# Runtime data directory for the daemon.
|
@@ -73,7 +73,7 @@ module RExec
|
|
73
73
|
|
74
74
|
# Standard location of process pid file.
|
75
75
|
def self.process_file_path
|
76
|
-
File.join(runtime_directory, "
|
76
|
+
File.join(runtime_directory, "#{daemon_name}.pid")
|
77
77
|
end
|
78
78
|
|
79
79
|
# Mark the output log.
|
@@ -87,7 +87,7 @@ module RExec
|
|
87
87
|
def self.tail_log(output)
|
88
88
|
lines = []
|
89
89
|
|
90
|
-
File.open(
|
90
|
+
File.open(log_file_path, "r") do |log_file|
|
91
91
|
log_file.seek_end
|
92
92
|
|
93
93
|
log_file.reverse_each_line do |line|
|
@@ -103,10 +103,10 @@ module RExec
|
|
103
103
|
|
104
104
|
# Check the last few lines of the log file to find out if the daemon crashed.
|
105
105
|
def self.crashed?
|
106
|
-
File.open(
|
106
|
+
File.open(log_file_path, "r") do |log_file|
|
107
107
|
log_file.seek_end
|
108
108
|
|
109
|
-
count =
|
109
|
+
count = 3
|
110
110
|
log_file.reverse_each_line do |line|
|
111
111
|
return true if line.match("=== Daemon Crashed")
|
112
112
|
|
@@ -21,6 +21,8 @@
|
|
21
21
|
require 'rexec/daemon/process_file'
|
22
22
|
require 'rexec/task'
|
23
23
|
|
24
|
+
require 'rainbow'
|
25
|
+
|
24
26
|
module RExec
|
25
27
|
module Daemon
|
26
28
|
# Daemon startup timeout
|
@@ -53,16 +55,16 @@ module RExec
|
|
53
55
|
|
54
56
|
# This function starts the supplied daemon
|
55
57
|
def self.start(daemon)
|
56
|
-
puts "Starting daemon..."
|
58
|
+
puts "Starting daemon...".color(:blue)
|
57
59
|
|
58
60
|
case ProcessFile.status(daemon)
|
59
61
|
when :running
|
60
|
-
$stderr.puts "Daemon already running!"
|
62
|
+
$stderr.puts "Daemon already running!".color(:blue)
|
61
63
|
return
|
62
64
|
when :stopped
|
63
65
|
# We are good to go...
|
64
66
|
else
|
65
|
-
$stderr.puts "Daemon in unknown state! Will clear previous state and continue."
|
67
|
+
$stderr.puts "Daemon in unknown state! Will clear previous state and continue.".color(:red)
|
66
68
|
status(daemon)
|
67
69
|
ProcessFile.clear(daemon)
|
68
70
|
end
|
@@ -125,14 +127,14 @@ module RExec
|
|
125
127
|
end
|
126
128
|
end
|
127
129
|
|
128
|
-
puts "Waiting for daemon to start..."
|
130
|
+
puts "Waiting for daemon to start...".color(:blue)
|
129
131
|
sleep 0.1
|
130
132
|
timer = TIMEOUT
|
131
133
|
pid = ProcessFile.recall(daemon)
|
132
134
|
|
133
135
|
while pid == nil and timer > 0
|
134
136
|
# Wait a moment for the forking to finish...
|
135
|
-
puts "Waiting for daemon to start (#{timer}/#{TIMEOUT})"
|
137
|
+
puts "Waiting for daemon to start (#{timer}/#{TIMEOUT})".color(:blue)
|
136
138
|
sleep 1
|
137
139
|
|
138
140
|
# If the daemon has crashed, it is never going to start...
|
@@ -148,28 +150,29 @@ module RExec
|
|
148
150
|
def self.status(daemon)
|
149
151
|
case ProcessFile.status(daemon)
|
150
152
|
when :running
|
151
|
-
puts "Daemon status: running pid=#{ProcessFile.recall(daemon)}"
|
153
|
+
puts "Daemon status: running pid=#{ProcessFile.recall(daemon)}".color(:green)
|
152
154
|
when :unknown
|
153
155
|
if daemon.crashed?
|
154
|
-
puts "Daemon status: crashed"
|
156
|
+
puts "Daemon status: crashed".color(:red)
|
155
157
|
|
156
158
|
$stdout.flush
|
157
|
-
daemon.
|
159
|
+
$stderr.puts "Dumping daemon crash log:".color(:red)
|
160
|
+
daemon.tail_log($stderr)
|
158
161
|
else
|
159
|
-
puts "Daemon status: unknown"
|
162
|
+
puts "Daemon status: unknown".color(:red)
|
160
163
|
end
|
161
164
|
when :stopped
|
162
|
-
puts "Daemon status: stopped"
|
165
|
+
puts "Daemon status: stopped".color(:blue)
|
163
166
|
end
|
164
167
|
end
|
165
168
|
|
166
169
|
# Stops the daemon process.
|
167
170
|
def self.stop(daemon)
|
168
|
-
puts "Stopping daemon..."
|
171
|
+
puts "Stopping daemon...".color(:blue)
|
169
172
|
|
170
173
|
# Check if the pid file exists...
|
171
174
|
unless File.file?(daemon.process_file_path)
|
172
|
-
puts "Pid file not found. Is the daemon running?"
|
175
|
+
puts "Pid file not found. Is the daemon running?".color(:red)
|
173
176
|
return
|
174
177
|
end
|
175
178
|
|
@@ -177,7 +180,7 @@ module RExec
|
|
177
180
|
|
178
181
|
# Check if the daemon is already stopped...
|
179
182
|
unless ProcessFile.running(daemon)
|
180
|
-
puts "Pid #{pid} is not running. Has daemon crashed?"
|
183
|
+
puts "Pid #{pid} is not running. Has daemon crashed?".color(:red)
|
181
184
|
return
|
182
185
|
end
|
183
186
|
|
@@ -191,7 +194,7 @@ module RExec
|
|
191
194
|
while ProcessFile.running(daemon) and attempts > 0
|
192
195
|
sig = (attempts < 2) ? "KILL" : "TERM"
|
193
196
|
|
194
|
-
puts "Sending #{sig} to pid #{pid}..."
|
197
|
+
puts "Sending #{sig} to pid #{pid}...".color(:red)
|
195
198
|
Process.kill(sig, pid)
|
196
199
|
|
197
200
|
sleep 1
|
@@ -200,7 +203,7 @@ module RExec
|
|
200
203
|
|
201
204
|
# If after doing our best the daemon is still running (pretty odd)...
|
202
205
|
if ProcessFile.running(daemon)
|
203
|
-
puts "Daemon appears to be still running!"
|
206
|
+
puts "Daemon appears to be still running!".color(:red)
|
204
207
|
return
|
205
208
|
end
|
206
209
|
|
data/lib/rexec/version.rb
CHANGED
data/test/test_remote_server.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
# THE SOFTWARE.
|
22
22
|
|
23
23
|
# This script is used to test actual remote connections
|
24
|
-
# e.g. ./
|
24
|
+
# e.g. ./test_remote_server.rb "ssh haru.oriontransfer.org"
|
25
25
|
|
26
26
|
require 'helper'
|
27
27
|
|
@@ -65,4 +65,3 @@ class RemoteServerTest < Test::Unit::TestCase
|
|
65
65
|
conn.stop
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rainbow
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
14
30
|
description:
|
15
31
|
email: samuel@oriontransfer.org
|
16
32
|
executables:
|
@@ -58,6 +74,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
74
|
- - ! '>='
|
59
75
|
- !ruby/object:Gem::Version
|
60
76
|
version: '0'
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
hash: 3629144491147234128
|
61
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
81
|
none: false
|
63
82
|
requirements:
|