diff --git a/data/export/supervisord/app.conf.erb b/data/export/supervisord/app.conf.erb index 931d0da..9acb875 100644 --- a/data/export/supervisord/app.conf.erb +++ b/data/export/supervisord/app.conf.erb @@ -5,7 +5,7 @@ engine.procfile.entries.each do |process| 1.upto(self.concurrency[process.name]) do |num| port = engine.port_for(process, num, self.port) name = if (conc > 1); "#{process.name}-#{num}" else process.name; end - environment = (engine.environment.map{ |var,env| "#{var.upcase}=#{env}" } + ["PORT=#{port}"]) + environment = (engine.environment.map{ |var,env| "#{var.upcase}=#{wrap_environment env}" } + ["PORT=#{wrap_environment port}"]) app_name = "#{app}-#{name}" app_names << app_name %> diff --git a/lib/foreman/export/supervisord.rb b/lib/foreman/export/supervisord.rb index 11eedd6..aef2097 100644 --- a/lib/foreman/export/supervisord.rb +++ b/lib/foreman/export/supervisord.rb @@ -23,4 +23,8 @@ class Foreman::Export::Supervisord < Foreman::Export::Base write_file "#{location}/#{app}.conf", app_config end + def wrap_environment env + "\"#{env}\"" + end + end diff --git a/spec/foreman/export/supervisord_spec.rb b/spec/foreman/export/supervisord_spec.rb index 616b181..9ef9ef1 100644 --- a/spec/foreman/export/supervisord_spec.rb +++ b/spec/foreman/export/supervisord_spec.rb @@ -72,4 +72,22 @@ describe Foreman::Export::Supervisord, :fakefs do end end + context "environment export" do + it "wraps the original environment with quotes" do + supervisord.wrap_environment("slowqueue,fastqueue").should == '"slowqueue,fastqueue"' + end + + it "correctly translates environment when exporting" do + File.open("/tmp/supervisord_env", "w") { |f| f.puts("QUEUE=fastqueue,slowqueue\nVERBOSE=1") } + + engine = Foreman::Engine.new(procfile,:env => "/tmp/supervisord_env") + supervisor = Foreman::Export::Supervisord.new("/tmp/init", engine, options) + stub(supervisor).say + + supervisor.export + + File.read("/tmp/init/app.conf").should == example_export_file("supervisord/app-env-with-comma.conf") + end + end + end diff --git a/spec/resources/export/supervisord/app-alpha-2.conf b/spec/resources/export/supervisord/app-alpha-2.conf index c656237..972117d 100644 --- a/spec/resources/export/supervisord/app-alpha-2.conf +++ b/spec/resources/export/supervisord/app-alpha-2.conf @@ -8,7 +8,7 @@ stdout_logfile=/var/log/app/alpha-1-out.log stderr_logfile=/var/log/app/alpha-1-err.log user=app directory=/tmp/app -environment=PORT=5000 +environment=PORT="5000" [program:app-alpha-2] command=./alpha autostart=true @@ -18,7 +18,7 @@ stdout_logfile=/var/log/app/alpha-2-out.log stderr_logfile=/var/log/app/alpha-2-err.log user=app directory=/tmp/app -environment=PORT=5001 +environment=PORT="5001" [group:app] programs=app-alpha-1,app-alpha-2 diff --git a/spec/resources/export/supervisord/app-env-with-comma.conf b/spec/resources/export/supervisord/app-env-with-comma.conf new file mode 100644 index 0000000..6b50836 --- /dev/null +++ b/spec/resources/export/supervisord/app-env-with-comma.conf @@ -0,0 +1,24 @@ + +[program:app-alpha] +command=./alpha +autostart=true +autorestart=true +stopsignal=QUIT +stdout_logfile=/var/log/app/alpha-1-out.log +stderr_logfile=/var/log/app/alpha-1-err.log +user=app +directory=/tmp/app +environment=QUEUE="fastqueue,slowqueue",VERBOSE="1",PORT="5000" +[program:app-bravo] +command=./bravo +autostart=true +autorestart=true +stopsignal=QUIT +stdout_logfile=/var/log/app/bravo-1-out.log +stderr_logfile=/var/log/app/bravo-1-err.log +user=app +directory=/tmp/app +environment=QUEUE="fastqueue,slowqueue",VERBOSE="1",PORT="5100" + +[group:app] +programs=app-alpha,app-bravo diff --git a/spec/resources/export/supervisord/app-env.conf b/spec/resources/export/supervisord/app-env.conf new file mode 100644 index 0000000..23df258 --- /dev/null +++ b/spec/resources/export/supervisord/app-env.conf @@ -0,0 +1,21 @@ + +[program:app-alpha] +command=./alpha +autostart=true +autorestart=true +stopsignal=QUIT +stdout_logfile=/var/log/app/alpha-1-out.log +stderr_logfile=/var/log/app/alpha-1-err.log +user=app +directory=/tmp/app +environment=FOO="bar",PORT="5000" +[program:app-bravo] +command=./bravo +autostart=true +autorestart=true +stopsignal=QUIT +stdout_logfile=/var/log/app/bravo-1-out.log +stderr_logfile=/var/log/app/bravo-1-err.log +user=app +directory=/tmp/app +environment=FOO="bar",PORT="5100" diff --git a/spec/resources/export/supervisord/app.conf b/spec/resources/export/supervisord/app.conf index 49052f8..abf811a 100644 --- a/spec/resources/export/supervisord/app.conf +++ b/spec/resources/export/supervisord/app.conf @@ -8,7 +8,7 @@ stdout_logfile=/var/log/app/alpha-1-out.log stderr_logfile=/var/log/app/alpha-1-err.log user=app directory=/tmp/app -environment=PORT=5000 +environment=PORT="5000" [program:app-bravo] command=./bravo autostart=true @@ -18,7 +18,7 @@ stdout_logfile=/var/log/app/bravo-1-out.log stderr_logfile=/var/log/app/bravo-1-err.log user=app directory=/tmp/app -environment=PORT=5100 +environment=PORT="5100" [group:app] programs=app-alpha,app-bravo