Compare commits

...

5 Commits

Author SHA1 Message Date
David Dollar
7fdade277c 0.48.0 2012-07-10 15:06:22 -04:00
David Dollar
1a0943c495 allow old exporter format to work, but with deprecation warning 2012-07-10 15:06:22 -04:00
David Dollar
4a732abd77 remove debugging code 2012-07-10 15:06:22 -04:00
David Dollar
3e71fea777 Merge pull request #219 from MarkDBlackwell/patch-1
Avoid crash by verifying the existence of SIGHUP before accessing it.
2012-07-09 06:30:14 -07:00
Mark D. Blackwell
ae7aeabb63 Avoid crash by verifying the existence of SIGHUP before accessing it. 2012-07-08 16:21:27 -03:00
6 changed files with 92 additions and 23 deletions

View File

@@ -1,7 +1,7 @@
PATH
remote: .
specs:
foreman (0.48.0.pre3)
foreman (0.48.0)
thor (>= 0.13.6)
GEM
@@ -39,7 +39,7 @@ GEM
multi_json (~> 1.0.3)
simplecov-html (~> 0.5.3)
simplecov-html (0.5.3)
thor (0.15.2)
thor (0.15.3)
timecop (0.3.5)
win32console (1.3.0-x86-mingw32)
xml-simple (1.0.15)

View File

@@ -24,7 +24,7 @@ class Foreman::Engine
def initialize(options={})
@options = options.dup
@options[:formation] ||= "all=1"
@options[:formation] ||= (options[:concurrency] || "all=1")
@env = {}
@mutex = Mutex.new
@@ -39,7 +39,7 @@ class Foreman::Engine
def start
trap("TERM") { puts "SIGTERM received"; terminate_gracefully }
trap("INT") { puts "SIGINT received"; terminate_gracefully }
trap("HUP") { puts "SIGHUP received"; terminate_gracefully }
trap("HUP") { puts "SIGHUP received"; terminate_gracefully } if ::Signal.list.keys.include? 'HUP'
startup
spawn_processes
@@ -154,11 +154,28 @@ class Foreman::Engine
#
# @param [Foreman::Process] process A +Process+ associated with this engine
# @param [Fixnum] instance The instance of the process
#
#
# @returns [Fixnum] port The port to use for this instance of this process
#
def port_for(process, instance)
base_port + (@processes.index(process) * 100) + (instance - 1)
def port_for(process, instance, base=nil)
if base
base + (@processes.index(process.process) * 100) + (instance - 1)
else
base_port + (@processes.index(process) * 100) + (instance - 1)
end
end
# Get the base port for this foreman instance
#
# @returns [Fixnum] port The base port
#
def base_port
(options[:port] || env["PORT"] || ENV["PORT"] || 5000).to_i
end
# deprecated
def environment
env
end
private
@@ -179,10 +196,6 @@ private
## Helpers ##########################################################
def base_port
(options[:port] || env["PORT"] || ENV["PORT"] || 5000).to_i
end
def create_pipe
IO.method(:pipe).arity.zero? ? IO.pipe : IO.pipe("BINARY")
end
@@ -193,7 +206,7 @@ private
end
def parse_formation(formation)
pairs = @options[:formation].to_s.gsub(/\s/, "").split(",")
pairs = formation.to_s.gsub(/\s/, "").split(",")
pairs.inject(Hash.new(0)) do |ax, pair|
process, amount = pair.split("=")

View File

@@ -1,5 +1,6 @@
require "foreman"
require "foreman/helpers"
require "pathname"
module Foreman::Export
extend Foreman::Helpers
@@ -31,4 +32,3 @@ require "foreman/export/bluepill"
require "foreman/export/runit"
require "foreman/export/supervisord"
require "foreman/export/launchd"

View File

@@ -1,4 +1,6 @@
require "foreman/export"
require "ostruct"
require "pathname"
require "shellwords"
class Foreman::Export::Base
@@ -8,11 +10,37 @@ class Foreman::Export::Base
attr_reader :options
attr_reader :formation
# deprecated
attr_reader :port
def initialize(location, engine, options={})
@location = location
@engine = engine
@options = options.dup
@formation = engine.formation
# deprecated
def port
Foreman::Export::Base.warn_deprecation!
engine.base_port
end
# deprecated
def template
Foreman::Export::Base.warn_deprecation!
options[:template]
end
# deprecated
def @engine.procfile
Foreman::Export::Base.warn_deprecation!
@processes.map do |process|
OpenStruct.new(
:name => @names[process],
:process => process
)
end
end
end
def export
@@ -36,6 +64,18 @@ class Foreman::Export::Base
private ######################################################################
def self.warn_deprecation!
@@deprecation_warned ||= false
return if @@deprecation_warned
puts "WARNING: Using deprecated exporter interface. Please update your exporter"
puts "the interface shown in the upstart exporter:"
puts
puts "https://github.com/ddollar/foreman/blob/master/lib/foreman/export/upstart.rb"
puts "https://github.com/ddollar/foreman/blob/master/data/export/upstart/process.conf.erb"
puts
@@deprecation_warned = true
end
def error(message)
raise Foreman::Export::Exception.new(message)
end
@@ -54,13 +94,28 @@ private ######################################################################
'"' + Shellwords.escape(value) + '"'
end
def export_template(name)
name_without_first = name.split("/")[1..-1].join("/")
matchers = []
matchers << File.join(options[:template], name_without_first) if options[:template]
matchers << File.expand_path("~/.foreman/templates/#{name}")
matchers << File.expand_path("../../../../data/export/#{name}", __FILE__)
File.read(matchers.detect { |m| File.exists?(m) })
# deprecated
def old_export_template(exporter, file, template_root)
if template_root && File.exist?(file_path = File.join(template_root, file))
File.read(file_path)
elsif File.exist?(file_path = File.expand_path(File.join("~/.foreman/templates", file)))
File.read(file_path)
else
File.read(File.expand_path("../../../../data/export/#{exporter}/#{file}", __FILE__))
end
end
def export_template(name, file=nil, template_root=nil)
if file && template_root
old_export_template name, file, template_root
else
name_without_first = name.split("/")[1..-1].join("/")
matchers = []
matchers << File.join(options[:template], name_without_first) if options[:template]
matchers << File.expand_path("~/.foreman/templates/#{name}")
matchers << File.expand_path("../../../../data/export/#{name}", __FILE__)
File.read(matchers.detect { |m| File.exists?(m) })
end
end
def write_template(name, target, binding)
@@ -81,7 +136,9 @@ private ######################################################################
def write_file(filename, contents)
say "writing: #{filename}"
File.open(File.join(location, filename), "w") do |file|
filename = File.join(location, filename) unless Pathname.new(filename).absolute?
File.open(filename, "w") do |file|
file.puts contents
end
end

View File

@@ -1,5 +1,5 @@
module Foreman
VERSION = "0.48.0.pre3"
VERSION = "0.48.0"
end

View File

@@ -54,7 +54,6 @@ def fork_and_capture(&blk)
Process.wait pid
buffer = ""
until rd.eof?
p [:foo]
buffer += rd.gets
end
end