foreman_export_runitu 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ foreman_export_runitu
2
+ =====================
3
+
4
+ Foreman exporter to runit, unlike original runit exporter, does it without sudo
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ LOG=<%= log %>/<%= name %>-<%= num %>
5
+
6
+ test -d "$LOG" || mkdir -p m2750 "$LOG"
7
+ exec svlogd "$LOG"
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ exec 2>&1
5
+ cd <%= engine.root %>
6
+ exec -e <%= File.join(location, "#{process_directory}/env") %> <%= process.command %>
@@ -0,0 +1,49 @@
1
+ require "erb"
2
+ require "foreman/export"
3
+
4
+ class Foreman::Export::Runitu < Foreman::Export::Base
5
+
6
+ @template_root = Pathname.new(File.dirname(__FILE__)).join('../../../data/templates')
7
+
8
+ class << self
9
+ attr_reader :template_root
10
+ end
11
+
12
+ ENV_VARIABLE_REGEX = /([a-zA-Z_]+[a-zA-Z0-9_]*)=(\S+)/
13
+
14
+ def export_from_base
15
+ error("Must specify a location") unless location
16
+ FileUtils.mkdir_p(location) rescue error("Could not create: #{location}")
17
+ FileUtils.mkdir_p(log) rescue error("Could not create: #{log}")
18
+ #FileUtils.chown(user, nil, log) rescue error("Could not chown #{log} to #{user}")
19
+ end
20
+
21
+ def export
22
+ template_root = Pathname.new(File.dirname(__FILE__)).join('../../../data/export/runitu').to_s
23
+
24
+ engine.each_process do |name, process|
25
+ 1.upto(engine.formation[name]) do |num|
26
+ process_directory = "#{app}-#{name}-#{num}"
27
+
28
+ create_directory process_directory
29
+ create_directory "#{process_directory}/env"
30
+ create_directory "#{process_directory}/log"
31
+
32
+ write_template "#{template_root}/run.erb", "#{process_directory}/run", binding
33
+ chmod 0755, "#{process_directory}/run"
34
+
35
+ port = engine.port_for(process, num)
36
+ engine.env.merge("PORT" => port.to_s).each do |key, value|
37
+ write_file "#{process_directory}/env/#{key}", value
38
+ end
39
+
40
+ write_template "#{template_root}/log/run.erb", "#{process_directory}/log/run", binding
41
+ chmod 0755, "#{process_directory}/log/run"
42
+ end
43
+ end
44
+ end
45
+
46
+ def export_template(name, file = nil, template_root = nil)
47
+ File.read(name)
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foreman_export_runitu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dmitry Galisnky
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: foreman
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Foreman exporter to runit, unlike original runit exporter, does it without
31
+ sudo
32
+ email: dima.exe@gmail.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - data/export/runitu/log/run.erb
38
+ - data/export/runitu/run.erb
39
+ - lib/foreman/export/runitu.rb
40
+ - README.md
41
+ homepage: http://github.com/dima-exe/foreman_export_runitu
42
+ licenses: []
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 1.8.23
62
+ signing_key:
63
+ specification_version: 3
64
+ summary: Foreman exporter to runit, unlike original runit exporter, does it without
65
+ sudo
66
+ test_files: []
67
+ has_rdoc: