From 9db97abb10c79f3772d874efb9bd7fcdeab20e50 Mon Sep 17 00:00:00 2001 From: Hunter Nield Date: Thu, 25 Aug 2011 21:17:00 +1000 Subject: [PATCH] Updates to get Bluepill export working & tweaks to output --- data/export/bluepill/master.pill.erb | 8 +++++--- lib/foreman/cli.rb | 1 + lib/foreman/export.rb | 1 + spec/resources/export/bluepill/app.pill | 14 ++++++++++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/data/export/bluepill/master.pill.erb b/data/export/bluepill/master.pill.erb index 6c44eca..e02785f 100644 --- a/data/export/bluepill/master.pill.erb +++ b/data/export/bluepill/master.pill.erb @@ -1,4 +1,4 @@ -Bluepill.application("<%= app %>", :foreground => false) do |app| +Bluepill.application("<%= app %>", :foreground => false, :log_file => "/var/log/bluepill.log") do |app| app.uid = "<%= user %>" app.gid = "<%= user %>" @@ -7,18 +7,20 @@ Bluepill.application("<%= app %>", :foreground => false) do |app| <% 1.upto(concurrency[process.name]) do |num| %> <% port = engine.port_for(process, num, options[:port]) %> app.process("<%= process.name %>-<%=num%>") do |process| - process.start_command = "<%= process.command %>" + process.start_command = "<%= process.command.gsub("$PORT", port.to_s) %>" process.working_dir = "<%= engine.directory %>" - process.pid_file = "/var/run/<%= app %>-<%= process.name %>-<%=num%>.pid" process.daemonize = true process.environment = {"PORT" => "<%= port %>"} + process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill] process.stdout = process.stderr = "<%= log_root %>/<%= app %>-<%= process.name %>-<%=num%>.log" process.monitor_children do |children| children.stop_command "kill -QUIT {{PID}}" end + + process.group = "<%= app %>-<%= process.name %>" end <% end %> <% end %> diff --git a/lib/foreman/cli.rb b/lib/foreman/cli.rb index 042212b..e9e76ba 100644 --- a/lib/foreman/cli.rb +++ b/lib/foreman/cli.rb @@ -40,6 +40,7 @@ class Foreman::CLI < Thor formatter = case format when "inittab" then Foreman::Export::Inittab when "upstart" then Foreman::Export::Upstart + when "bluepill" then Foreman::Export::Bluepill else error "Unknown export format: #{format}." end diff --git a/lib/foreman/export.rb b/lib/foreman/export.rb index ab206c1..7976694 100644 --- a/lib/foreman/export.rb +++ b/lib/foreman/export.rb @@ -7,3 +7,4 @@ end require "foreman/export/base" require "foreman/export/inittab" require "foreman/export/upstart" +require "foreman/export/bluepill" diff --git a/spec/resources/export/bluepill/app.pill b/spec/resources/export/bluepill/app.pill index 9e01527..bef2f13 100644 --- a/spec/resources/export/bluepill/app.pill +++ b/spec/resources/export/bluepill/app.pill @@ -1,4 +1,4 @@ -Bluepill.application("app", :foreground => false) do |app| +Bluepill.application("app", :foreground => false, :log_file => "/var/log/bluepill.log") do |app| app.uid = "app" app.gid = "app" @@ -10,15 +10,17 @@ Bluepill.application("app", :foreground => false) do |app| process.start_command = "./alpha" process.working_dir = "/tmp/app" - process.pid_file = "/var/run/app-alpha-1.pid" process.daemonize = true process.environment = {"PORT" => "5000"} + process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill] process.stdout = process.stderr = "/var/log/app/app-alpha-1.log" process.monitor_children do |children| children.stop_command "kill -QUIT {{PID}}" end + + process.group = "app-alpha" end @@ -26,15 +28,17 @@ Bluepill.application("app", :foreground => false) do |app| process.start_command = "./alpha" process.working_dir = "/tmp/app" - process.pid_file = "/var/run/app-alpha-2.pid" process.daemonize = true process.environment = {"PORT" => "5001"} + process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill] process.stdout = process.stderr = "/var/log/app/app-alpha-2.log" process.monitor_children do |children| children.stop_command "kill -QUIT {{PID}}" end + + process.group = "app-alpha" end @@ -44,15 +48,17 @@ Bluepill.application("app", :foreground => false) do |app| process.start_command = "./bravo" process.working_dir = "/tmp/app" - process.pid_file = "/var/run/app-bravo-1.pid" process.daemonize = true process.environment = {"PORT" => "5100"} + process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill] process.stdout = process.stderr = "/var/log/app/app-bravo-1.log" process.monitor_children do |children| children.stop_command "kill -QUIT {{PID}}" end + + process.group = "app-bravo" end