diff --git a/lib/foreman/cli.rb b/lib/foreman/cli.rb index 02a8ed9..6a2a9d3 100644 --- a/lib/foreman/cli.rb +++ b/lib/foreman/cli.rb @@ -1,5 +1,4 @@ require "foreman" -require "foreman/configuration" require "foreman/engine" require "foreman/export" require "thor" diff --git a/lib/foreman/configuration.rb b/lib/foreman/configuration.rb deleted file mode 100644 index 15c57b6..0000000 --- a/lib/foreman/configuration.rb +++ /dev/null @@ -1,55 +0,0 @@ -require "foreman" - -class Foreman::Configuration - - attr_reader :app - attr_reader :processes - - def initialize(app) - @app = app - @processes = {} - read_initial_config - end - - def scale(process, amount) - old_amount = processes[process].to_i - processes[process] = amount.to_i - amount = amount.to_i - - if (old_amount < amount) - ((old_amount + 1) .. amount).each { |num| system "start #{app}-#{process} NUM=#{num}" } - elsif (amount < old_amount) - ((amount + 1) .. old_amount).each { |num| system "stop #{app}-#{process} NUM=#{num}" } - end - - write - end - - def write - write_file "/etc/foreman/#{app}.conf", <<-UPSTART_CONFIG -#{app}_processes="#{processes.keys.sort.join(' ')}" -#{processes.keys.sort.map { |k| "#{app}_#{k}=\"#{processes[k]}\"" }.join("\n")} - UPSTART_CONFIG - end - -private ###################################################################### - - def read_initial_config - config = File.read("/etc/foreman/#{app}.conf").split("\n").inject({}) do |accum, line| - key, value = line.match(/^(.+?)\s*=\s*"(.+?)"\s*$/).captures - #accum.update(parts(1) => parts(2)) - accum.update(key => value) - end - config["#{app}_processes"].split(" ").each do |process| - processes[process] = config["#{app}_#{process}"].to_i - end - rescue Errno::ENOENT - end - - def write_file(filename, contents) - File.open(filename, "w") do |file| - file.puts contents - end - end - -end diff --git a/lib/foreman/export/base.rb b/lib/foreman/export/base.rb index c7bdde8..32ac57d 100644 --- a/lib/foreman/export/base.rb +++ b/lib/foreman/export/base.rb @@ -1,4 +1,3 @@ -require "foreman/configuration" require "foreman/export" class Foreman::Export::Base diff --git a/lib/foreman/export/upstart.rb b/lib/foreman/export/upstart.rb index 59bb100..7888ca9 100644 --- a/lib/foreman/export/upstart.rb +++ b/lib/foreman/export/upstart.rb @@ -1,5 +1,4 @@ require "erb" -require "foreman/configuration" require "foreman/export/base" class Foreman::Export::Upstart < Foreman::Export::Base @@ -23,27 +22,13 @@ class Foreman::Export::Upstart < Foreman::Export::Base write_file "#{location}/#{app}.conf", master_config process_template = export_template("upstart/process.conf.erb") - + engine.processes.values.each do |process| 1.upto(concurrency[process.name]) do |num| process_config = ERB.new(process_template).result(binding) write_file "#{location}/#{app}-#{process.name}-#{num}.conf", process_config end end - - return - write_file "#{location}/#{app}.conf", <<-UPSTART_MASTER - UPSTART_MASTER - - engine.processes.each do |process| - write_file process_conf, <<-UPSTART_CHILD - UPSTART_CHILD - end - - engine.processes.each do |name, process| - config.processes[name] ||= 1 - end - config.write end end diff --git a/spec/foreman/configuration_spec.rb b/spec/foreman/configuration_spec.rb deleted file mode 100644 index 9a8f433..0000000 --- a/spec/foreman/configuration_spec.rb +++ /dev/null @@ -1,49 +0,0 @@ -require "spec_helper" -require "foreman/configuration" - -describe "Foreman::Configuration" do - subject { Foreman::Configuration.new("testapp") } - - describe "initialize" do - describe "without an existing config" do - it "has no processes" do - subject.processes.length.should == 0 - end - end - - describe "with an existing config" do - it "has processes" do - write_foreman_config("testapp") - subject.processes["alpha"].should == 1 - subject.processes["bravo"].should == 2 - end - end - end - - describe "scale" do - before(:each) { write_foreman_config("testapp") } - - it "can scale up" do - mock(subject).system("start testapp-alpha NUM=2") - mock(subject).system("start testapp-alpha NUM=3") - subject.scale("alpha", 3) - end - - it "can scale down" do - mock(subject).system("stop testapp-bravo NUM=2") - subject.scale("bravo", 1) - end - end - - describe "wite" do - it "can write a configuration file" do - subject.scale("charlie", 3) - subject.scale("delta", 4) - File.read("/etc/foreman/testapp.conf").should == <<-FOREMAN_CONFIG -testapp_processes="charlie delta" -testapp_charlie="3" -testapp_delta="4" - FOREMAN_CONFIG - end - end -end