foreman-upstart-scaling 0.3 → 0.4.pre
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.
@@ -4,7 +4,7 @@ respawn
|
|
4
4
|
respawn limit 10 5
|
5
5
|
kill timeout 20
|
6
6
|
|
7
|
-
instance
|
7
|
+
instance $INSTANCE
|
8
8
|
|
9
9
|
env PORT=<%= port %>
|
10
10
|
<% engine.environment.each_pair do |var,value| %>
|
@@ -12,8 +12,7 @@ env <%= var.upcase %>=<%= value %>
|
|
12
12
|
<% end %>
|
13
13
|
|
14
14
|
script
|
15
|
-
|
16
|
-
export name="<%= app %>-<%=process.name%>-$<%= app.upcase %>_<%= process.name.upcase %>_INSTANCE"
|
15
|
+
export name="<%= app %>-<%=process.name%>-$INSTANCE"
|
17
16
|
|
18
17
|
# This little dance pipes output into logger with three
|
19
18
|
# goals in mind:
|
@@ -32,6 +31,11 @@ script
|
|
32
31
|
mkfifo $stdout_fifo
|
33
32
|
mkfifo $stderr_fifo
|
34
33
|
|
34
|
+
# Capture our pid so we can pass it to logger to record
|
35
|
+
# the pid of the actual job and not the pid of the logger
|
36
|
+
# background process.
|
37
|
+
job_pid=$$
|
38
|
+
|
35
39
|
# Start logger reading from the fifos, in the background.
|
36
40
|
# The parens cause the logger process to be reparented to
|
37
41
|
# init, rather than remaining a child of the current proc.
|
@@ -41,28 +45,21 @@ script
|
|
41
45
|
# process group as the main process, they would be killed
|
42
46
|
# by upstart together with the main process, and all output
|
43
47
|
# would be suppressed during termination.
|
44
|
-
( exec setsid logger -
|
45
|
-
( exec setsid logger -
|
48
|
+
( exec setsid logger -p local0.notice -t "$name[$job_pid]" <$stdout_fifo & )
|
49
|
+
( exec setsid logger -p local0.err -t "$name[$job_pid]" <$stderr_fifo & )
|
46
50
|
|
47
51
|
# Redirect the current shell's output to the fifos. Now that
|
48
52
|
# we have open fds for those fifos, we don't need the file
|
49
53
|
# system entries any more...
|
50
54
|
exec >$stdout_fifo 2>$stderr_fifo
|
51
55
|
|
52
|
-
# ...so we'll remove
|
56
|
+
# ...so we'll remove them.
|
53
57
|
rm $stdout_fifo
|
54
58
|
rm $stderr_fifo
|
55
59
|
|
56
|
-
# store ENV, as `sudo -i` don't preserve it
|
57
|
-
|
58
|
-
envfile=$(mktemp)
|
59
|
-
echo "PORT=$PORT <%= app.upcase %>_<%= process.name.upcase %>_INSTANCE=$<%= app.upcase %>_<%= process.name.upcase %>_INSTANCE<% engine.environment.each_pair do |var,value| %> <%= var.upcase %>=<%= value %><% end %>" > $envfile
|
60
|
-
chmod 0700 $envfile
|
61
|
-
chown <%= user %> $envfile
|
62
|
-
|
63
60
|
# Run the service in the usual way. Our output is already
|
64
61
|
# going to the fifos; that won't change when the new
|
65
62
|
# program executes.
|
66
|
-
exec sudo -u <%= user %> $(envline=$(cat $envfile); rm -f $envfile; echo $envline) -i '<%= process.command %>'
|
67
|
-
end script
|
68
63
|
|
64
|
+
exec sudo -u <%= user %> PORT=$(( $PORT + $INSTANCE )) <%= process.name.upcase.gsub('-', '_') %>_INSTANCE=$INSTANCE<% engine.environment.each_pair do |var,value| %> <%= var.upcase %>=<%= value %><% end %> -i "<%= process.command %>"
|
65
|
+
end script
|
@@ -3,15 +3,13 @@ start on starting <%= app %>-<%= process.name %>
|
|
3
3
|
task
|
4
4
|
|
5
5
|
script
|
6
|
-
|
7
|
-
[ -z
|
8
|
-
export
|
6
|
+
SCALE=$(su - <%= user %> -c 'echo $<%= process.name.upcase.gsub("-", "_") %>_SCALE')
|
7
|
+
[ -z $SCALE ] && SCALE=0
|
8
|
+
export SCALE
|
9
9
|
|
10
10
|
i=1
|
11
|
-
while [ $i -le
|
12
|
-
start <%= app %>-<%= process.name %>-instance
|
11
|
+
while [ $i -le $SCALE ]; do
|
12
|
+
start <%= app %>-<%= process.name %>-instance INSTANCE=$i
|
13
13
|
i=$(( $i + 1 ))
|
14
14
|
done
|
15
|
-
|
16
15
|
end script
|
17
|
-
|
@@ -32,7 +32,7 @@ class Foreman::Export::UpstartScaling < Foreman::Export::Base
|
|
32
32
|
process_instances_config = ERB.new(process_instances_template).result(binding)
|
33
33
|
write_file "#{location}/#{app}-#{process.name}-instances.conf", process_instances_config
|
34
34
|
|
35
|
-
port = self.port
|
35
|
+
port = engine.port_for(process, 1, self.port)
|
36
36
|
process_template = export_template("upstart_scaling", "process.conf.erb", template_root)
|
37
37
|
process_config = ERB.new(process_template).result(binding)
|
38
38
|
write_file "#{location}/#{app}-#{process.name}-instance.conf", process_config
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman-upstart-scaling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.pre
|
5
|
+
prerelease: 4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Fabio Kung
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-12 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: foreman
|
16
|
-
requirement: &
|
16
|
+
requirement: &70129330100600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 0.46.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70129330100600
|
25
25
|
description: Upstart exporter for foreman, that supports worker scaling via env vars.
|
26
26
|
email: fabio.kung@gmail.com
|
27
27
|
executables: []
|
@@ -48,9 +48,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
48
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- - ! '
|
51
|
+
- - ! '>'
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 1.3.1
|
54
54
|
requirements: []
|
55
55
|
rubyforge_project:
|
56
56
|
rubygems_version: 1.8.12
|