upstart-exporter 2.1.3 → 2.1.4
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 +2 -2
- data/lib/upstart-exporter.rb +2 -1
- data/lib/upstart-exporter/expanded_exporter.rb +2 -2
- data/lib/upstart-exporter/options/validator.rb +53 -30
- data/lib/upstart-exporter/version.rb +1 -1
- data/spec/lib/upstart-exporter/options/validator_spec.rb +6 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fce4ef046663f8e1e24c0d055b8c6f44f28fa88
|
4
|
+
data.tar.gz: aae98fdaf485adaaa86bacd3ced81e96744860f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fca66cae4aaa262c3585a85d19bb3e852198758695b36c883061caa1b89386fd2644e02ffbb986596f4877c367c65cf2c3e37415ddefded6500888877560941c
|
7
|
+
data.tar.gz: 0c97df4a412222f422d212c27e75f568ea1894c0d95af395d3b49a7725a4c53575fe0a6b70efee9cb5a5e278d478a8a0d585779b42f7eab04b30579a5cbeb3c0
|
data/README.md
CHANGED
@@ -35,7 +35,7 @@ which is a simple YAML file of the following format:
|
|
35
35
|
upstart_dir: /var/upstart_dir # Directory where upstart scripts should be placed
|
36
36
|
prefix: 'myupstartjobs-' # Prefix added to app's log folders and upstart scripts
|
37
37
|
respawn: # Controls how often job can fail and be restarted, set to false to prohibit restart after failure
|
38
|
-
|
38
|
+
count: 10 # Number of allowed restarts in given interval
|
39
39
|
interval: 10 # Interval in seconds
|
40
40
|
|
41
41
|
The config is not installed by default. If this config is absent, the default values are the following:
|
@@ -45,7 +45,7 @@ The config is not installed by default. If this config is absent, the default va
|
|
45
45
|
run_user: service
|
46
46
|
prefix: 'fb-'
|
47
47
|
respawn:
|
48
|
-
|
48
|
+
count: 5
|
49
49
|
interval: 10
|
50
50
|
|
51
51
|
To give a certain user (i.e. `deployuser`) the ability to use this script, you can place the following lines into `sudoers` file:
|
data/lib/upstart-exporter.rb
CHANGED
@@ -21,7 +21,7 @@ module Upstart
|
|
21
21
|
command_line_options = Options::CommandLine.new(command_line_args)
|
22
22
|
|
23
23
|
@options = global_options.merge(command_line_options)
|
24
|
-
Upstart::Exporter::Options::Validator.new(@options).
|
24
|
+
@options = Upstart::Exporter::Options::Validator.new(@options).call
|
25
25
|
|
26
26
|
ensure_dirs
|
27
27
|
end
|
@@ -100,6 +100,7 @@ module Upstart
|
|
100
100
|
:cmd_name => cmd_name,
|
101
101
|
:helper_cmd_conf => helper_cmd_conf(cmd_name)
|
102
102
|
)
|
103
|
+
|
103
104
|
File.open(upstart_cmd_conf(cmd_name), 'w') do |f|
|
104
105
|
f.write(cmd_upstart_conf_content)
|
105
106
|
end
|
@@ -29,11 +29,11 @@ class Upstart::Exporter
|
|
29
29
|
private
|
30
30
|
|
31
31
|
def export_cmd(command, cmd_options)
|
32
|
-
cmd_options =
|
32
|
+
cmd_options = cmd_options.merge(
|
33
33
|
:working_directory => working_directory(cmd_options),
|
34
34
|
:log => log(cmd_options),
|
35
35
|
:kill_timeout => kill_timeout(cmd_options)
|
36
|
-
|
36
|
+
)
|
37
37
|
|
38
38
|
script = cmd_options[:command]
|
39
39
|
script = add_env_command(script, cmd_options)
|
@@ -9,44 +9,65 @@ module Upstart::Exporter::Options
|
|
9
9
|
@options = options
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
12
|
+
def call
|
13
|
+
clean_params = {
|
14
|
+
:app_name => reject_special_symbols(options[:app_name]),
|
15
|
+
:helper_dir => validate_path(options[:helper_dir]),
|
16
|
+
:upstart_dir => validate_path(options[:upstart_dir]),
|
17
|
+
:run_user => reject_special_symbols(options[:run_user]),
|
18
|
+
:run_group => reject_special_symbols(options[:run_group]),
|
19
|
+
:prefix => reject_special_symbols(options[:prefix]),
|
20
|
+
:start_on_runlevel => validate_runlevel(options[:start_on_runlevel]),
|
21
|
+
:stop_on_runlevel => validate_runlevel(options[:stop_on_runlevel]),
|
22
|
+
:kill_timeout => validate_digits(options[:kill_timeout]),
|
23
|
+
:respawn => validate_respawn(options[:respawn]),
|
24
|
+
:working_directory => validate_path(options[:working_directory]),
|
25
|
+
:procfile_commands => validate_procfile(options[:procfile_commands])
|
26
|
+
}
|
27
|
+
|
28
|
+
clean_params
|
30
29
|
end
|
31
30
|
|
32
31
|
private
|
33
32
|
|
33
|
+
def validate_procfile(config)
|
34
|
+
if config[:version] == 2
|
35
|
+
validate_procfile_v2(config)
|
36
|
+
else
|
37
|
+
config
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
34
41
|
def validate_procfile_v2(config)
|
35
|
-
validate_command_params(config)
|
36
|
-
|
42
|
+
clean_params = validate_command_params(config)
|
43
|
+
clean_params[:version] = config[:version]
|
44
|
+
|
45
|
+
if config[:commands]
|
46
|
+
clean_params[:commands] = Hash[config[:commands].map {|name, cmd| [name, validate_command_params(cmd)]}]
|
47
|
+
end
|
48
|
+
|
49
|
+
clean_params
|
37
50
|
end
|
38
51
|
|
39
52
|
def validate_command_params(cmd)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
53
|
+
{
|
54
|
+
:command => cmd[:command],
|
55
|
+
:start_on_runlevel => validate_runlevel(cmd[:start_on_runlevel]),
|
56
|
+
:stop_on_runlevel => validate_runlevel(cmd[:stop_on_runlevel]),
|
57
|
+
:working_directory => validate_path(cmd[:working_directory]),
|
58
|
+
:respawn => validate_respawn(cmd[:respawn]),
|
59
|
+
:count => validate_digits(cmd[:count]),
|
60
|
+
:kill_timeout => validate_digits(cmd[:kill_timeout])
|
61
|
+
}
|
44
62
|
end
|
45
63
|
|
46
64
|
def validate_respawn(options)
|
47
|
-
return unless options
|
48
|
-
|
49
|
-
|
65
|
+
return options unless options.is_a?(Hash)
|
66
|
+
|
67
|
+
{
|
68
|
+
:count => validate_digits(options[:count]),
|
69
|
+
:interval => validate_digits(options[:interval])
|
70
|
+
}
|
50
71
|
end
|
51
72
|
|
52
73
|
def validate_path(val)
|
@@ -66,12 +87,14 @@ module Upstart::Exporter::Options
|
|
66
87
|
end
|
67
88
|
|
68
89
|
def validate(val, regexp)
|
69
|
-
|
70
|
-
return if
|
90
|
+
str_val = val.to_s
|
91
|
+
return if str_val == ""
|
71
92
|
|
72
|
-
unless
|
93
|
+
unless str_val =~ regexp
|
73
94
|
error("value #{val} is insecure and can't be accepted")
|
74
95
|
end
|
96
|
+
|
97
|
+
val
|
75
98
|
end
|
76
99
|
|
77
100
|
end
|
@@ -4,24 +4,24 @@ describe Upstart::Exporter::Options::Validator do
|
|
4
4
|
|
5
5
|
it "validates paths" do
|
6
6
|
validator = described_class.new(:helper_dir => "/some/dir;")
|
7
|
-
expect {validator.
|
7
|
+
expect {validator.call}.to raise_error(Upstart::Exporter::Error)
|
8
8
|
end
|
9
9
|
|
10
10
|
it "validates user names" do
|
11
11
|
validator = described_class.new(:run_user => "bad_user_name!")
|
12
|
-
expect {validator.
|
12
|
+
expect {validator.call}.to raise_error(Upstart::Exporter::Error)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "validates runlevels" do
|
16
16
|
validator = described_class.new(:start_on_runlevel => "[not_a_digit]")
|
17
|
-
expect {validator.
|
17
|
+
expect {validator.call}.to raise_error(Upstart::Exporter::Error)
|
18
18
|
end
|
19
19
|
|
20
20
|
describe "procfile v2" do
|
21
21
|
it "validates respawn" do
|
22
|
-
options = {:procfile_commands => {:version => 2, :respawn => {:
|
22
|
+
options = {:procfile_commands => {:version => 2, :respawn => {:count => "10;"}}}
|
23
23
|
validator = described_class.new(options)
|
24
|
-
expect {validator.
|
24
|
+
expect {validator.call}.to raise_error(Upstart::Exporter::Error)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "validates options for individual commands" do
|
@@ -35,7 +35,7 @@ describe Upstart::Exporter::Options::Validator do
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
validator = described_class.new(options)
|
38
|
-
expect {validator.
|
38
|
+
expect {validator.call}.to raise_error(Upstart::Exporter::Error)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upstart-exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Averyanov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-02-
|
12
|
+
date: 2016-02-05 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Gem for converting extended Procfile-like files to upstart scripts
|
15
15
|
email:
|