foreman-export-initd 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/lib/foreman-export-initd.rb +2 -0
- data/lib/foreman/export/initd.rb +8 -6
- data/lib/foreman/export/initd_monit.rb +36 -0
- data/lib/initd/monit_config.rb +25 -0
- data/lib/initd/script.rb +12 -11
- data/templates/monit_config.erb +5 -0
- data/templates/script.erb +58 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b55c6cfd6385fa58a2d609261bdcf3ca1524bac
|
4
|
+
data.tar.gz: 54d1de32f7968249ae105cdc1514c3ca8347316e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4231b9361b8bab104034c25fede661d8ea0f3811349de710484335c7b98d7edfa9bf2dc5f4c027188b7997162733116d9fa20910a7f3017c04006733f96b692
|
7
|
+
data.tar.gz: e940adf091390ec0c687a2a8fe34533c3403cda5d25010caf85fee956529ac06155bc7dbee2a6220648e922aad6015e177698d13b1d640c8b87b316dc42739e0
|
data/README.md
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# Initd script foreman exporter
|
2
2
|
|
3
|
+
[](https://travis-ci.org/tomaszdurka/foreman-export-initd)
|
4
|
+
|
3
5
|
Usage:
|
4
6
|
```
|
5
7
|
gem install foreman-export-initd
|
6
|
-
foreman-initd export initd
|
8
|
+
foreman-initd export initd /etc/init.d
|
9
|
+
foreman-initd export initd-monit /etc/monit/conf.d
|
7
10
|
```
|
data/lib/foreman-export-initd.rb
CHANGED
data/lib/foreman/export/initd.rb
CHANGED
@@ -4,25 +4,27 @@ class Foreman::Export::Initd < Foreman::Export::Base
|
|
4
4
|
error('Must specify a location') unless location
|
5
5
|
|
6
6
|
cwd = Pathname.new(engine.root)
|
7
|
-
|
7
|
+
export_path = Pathname.new(location)
|
8
|
+
say "creating: #{export_path}"
|
9
|
+
FileUtils.mkdir_p(export_path)
|
8
10
|
|
9
11
|
existing = []
|
10
|
-
Dir.glob
|
12
|
+
Dir.glob export_path.join("#{app}-*") do |filename|
|
11
13
|
contents = File.new(filename, 'r').read
|
12
14
|
existing.push(filename) if contents.match(/# Autogenerated by foreman/)
|
13
15
|
end
|
14
16
|
|
15
17
|
exported = []
|
16
18
|
engine.each_process do |name, process|
|
17
|
-
path =
|
19
|
+
path = export_path.join("#{app}-#{name}")
|
18
20
|
args = process.command.split(/\s+/)
|
19
21
|
script = Pathname.new(cwd).join(args.shift)
|
20
22
|
concurrency = engine.formation[name]
|
21
23
|
if concurrency > 0
|
22
24
|
say 'Warning: Initd exporter ignores concurrency > 1' if concurrency > 1
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
contents = Initd::Script.new(path, script, args, user).content
|
26
|
+
write_file(path, contents)
|
27
|
+
File.chmod(0755, path)
|
26
28
|
exported.push path.to_s
|
27
29
|
end
|
28
30
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class Foreman::Export::InitdMonit < Foreman::Export::Base
|
2
|
+
|
3
|
+
def export
|
4
|
+
error('Must specify a location') unless location
|
5
|
+
|
6
|
+
cwd = Pathname.new(engine.root)
|
7
|
+
export_path = Pathname.new(location)
|
8
|
+
say "creating: #{export_path}"
|
9
|
+
FileUtils.mkdir_p(export_path)
|
10
|
+
|
11
|
+
existing = []
|
12
|
+
Dir.glob export_path.join("#{app}-*") do |filename|
|
13
|
+
contents = File.new(filename, 'r').read
|
14
|
+
existing.push(filename) if contents.match(/# Autogenerated by foreman/)
|
15
|
+
end
|
16
|
+
|
17
|
+
exported = []
|
18
|
+
engine.each_process do |name, process|
|
19
|
+
path = export_path.join("#{app}-#{name}")
|
20
|
+
concurrency = engine.formation[name]
|
21
|
+
if concurrency > 0
|
22
|
+
say 'Warning: Initd exporter ignores concurrency > 1' if concurrency > 1
|
23
|
+
contents = Initd::MonitConfig.new(path).content
|
24
|
+
write_file(path, contents)
|
25
|
+
File.chmod(0755, path)
|
26
|
+
exported.push path.to_s
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
to_remove = existing - exported
|
31
|
+
to_remove.each do |filename|
|
32
|
+
say 'Removing ' + filename
|
33
|
+
File.unlink filename
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Initd::MonitConfig
|
2
|
+
|
3
|
+
attr_reader :path
|
4
|
+
|
5
|
+
def templates_dir
|
6
|
+
Pathname.new(__FILE__).dirname.dirname.dirname.join('templates')
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(path)
|
10
|
+
@path = path
|
11
|
+
end
|
12
|
+
|
13
|
+
def name
|
14
|
+
@path.basename.to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
def pidfile
|
18
|
+
Pathname.new('/var/run').join(name).join("#{name}.pid")
|
19
|
+
end
|
20
|
+
|
21
|
+
def content
|
22
|
+
template = templates_dir.join('monit_config.erb')
|
23
|
+
ERB.new(template.read, nil, '<>').result(binding)
|
24
|
+
end
|
25
|
+
end
|
data/lib/initd/script.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Initd::Script
|
2
2
|
|
3
|
-
attr_reader :daemon, :
|
3
|
+
attr_reader :daemon, :path, :description
|
4
4
|
|
5
5
|
def templates_dir
|
6
6
|
Pathname.new(__FILE__).dirname.dirname.dirname.join('templates')
|
@@ -9,23 +9,24 @@ class Initd::Script
|
|
9
9
|
def initialize(path, script, args, user)
|
10
10
|
@path = path
|
11
11
|
@daemon = {
|
12
|
-
:name =>
|
12
|
+
:name => name,
|
13
13
|
:script => script,
|
14
14
|
:args => args.join(' '),
|
15
|
-
:user => user
|
15
|
+
:user => user,
|
16
16
|
}
|
17
|
-
@
|
18
|
-
|
17
|
+
@description = name
|
18
|
+
end
|
19
|
+
|
20
|
+
def name
|
21
|
+
path.basename.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def pidfile
|
25
|
+
Pathname.new('/var/run').join(@daemon[:name]).join("#{@daemon[:name]}.pid")
|
19
26
|
end
|
20
27
|
|
21
28
|
def content
|
22
29
|
template = templates_dir.join('script.erb')
|
23
30
|
ERB.new(template.read, nil, '<>').result(binding)
|
24
31
|
end
|
25
|
-
|
26
|
-
def export
|
27
|
-
FileUtils.mkdir_p(File.dirname(@path))
|
28
|
-
File.new(@path, 'w').write(content)
|
29
|
-
File.chmod(0755, @path)
|
30
|
-
end
|
31
32
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
# Autogenerated by foreman
|
4
|
+
|
5
|
+
### BEGIN INIT INFO
|
6
|
+
# Provides: <%= name %>
|
7
|
+
# Required-Start: $syslog
|
8
|
+
# Required-Stop: $syslog
|
9
|
+
# Default-Start: 2 3 4 5
|
10
|
+
# Default-Stop: 0 1 6
|
11
|
+
# Short-Description: <%= name %>
|
12
|
+
# Description: <%= description %>
|
13
|
+
### END INIT INFO
|
14
|
+
|
15
|
+
NAME=<%= name %>
|
16
|
+
DESC=<%= description %>
|
17
|
+
DAEMON=<%= daemon[:script] %>
|
18
|
+
DAEMON_USER=<%= daemon[:user] %>
|
19
|
+
PIDDIR=<%= pidfile.dirname %>
|
20
|
+
PIDFILE=<%= pidfile %>
|
21
|
+
DAEMON_ARGS=<%= daemon[:args].shellescape %>
|
22
|
+
|
23
|
+
test -x ${DAEMON} || exit 0
|
24
|
+
set -e
|
25
|
+
. /lib/lsb/init-functions
|
26
|
+
|
27
|
+
|
28
|
+
case "${1}" in
|
29
|
+
start)
|
30
|
+
log_daemon_msg "Starting ${DESC}" "${NAME}"
|
31
|
+
mkdir -p ${PIDDIR}
|
32
|
+
if (start-stop-daemon --start --make-pidfile --background --pidfile $PIDFILE --chuid $DAEMON_USER --exec $DAEMON -- $DAEMON_ARGS); then
|
33
|
+
log_end_msg 0
|
34
|
+
else
|
35
|
+
log_end_msg 1
|
36
|
+
fi
|
37
|
+
;;
|
38
|
+
stop)
|
39
|
+
log_daemon_msg "Stopping ${DESC}" "${NAME}"
|
40
|
+
if (start-stop-daemon --stop --oknodo --retry 20 --pidfile $PIDFILE --chuid $DAEMON_USER); then
|
41
|
+
log_end_msg 0
|
42
|
+
else
|
43
|
+
log_end_msg 1
|
44
|
+
fi
|
45
|
+
;;
|
46
|
+
status)
|
47
|
+
status_of_proc -p ${PIDFILE} ${DAEMON} ${NAME}
|
48
|
+
;;
|
49
|
+
restart)
|
50
|
+
${0} stop
|
51
|
+
${0} start
|
52
|
+
;;
|
53
|
+
*)
|
54
|
+
echo "Usage: ${0} {start|stop|status|restart}" >&2
|
55
|
+
;;
|
56
|
+
esac
|
57
|
+
|
58
|
+
exit 0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman-export-initd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Durka
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
12
|
+
date: 2013-12-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: foreman
|
@@ -35,8 +35,12 @@ extra_rdoc_files:
|
|
35
35
|
files:
|
36
36
|
- bin/foreman-initd
|
37
37
|
- lib/foreman/export/initd.rb
|
38
|
+
- lib/foreman/export/initd_monit.rb
|
38
39
|
- lib/foreman-export-initd.rb
|
40
|
+
- lib/initd/monit_config.rb
|
39
41
|
- lib/initd/script.rb
|
42
|
+
- templates/monit_config.erb
|
43
|
+
- templates/script.erb
|
40
44
|
- README.md
|
41
45
|
homepage: http://github.com/tomaszdurka/foreman-export-initd
|
42
46
|
licenses: []
|