poise-service 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d47c652392a4752bf86351b4a44606d034ed40e
4
- data.tar.gz: fb3947850050d83ae21873015634b2fdfd8a13ec
3
+ metadata.gz: e78d99c983b8bbd140f02e127362f21d5016354b
4
+ data.tar.gz: 35322dfdbc04cbeac6b81f3e8c7b2a73c23cf045
5
5
  SHA512:
6
- metadata.gz: fe0e0fa38159705836a939027ad6ca1dd600a67e4594a7d77290050ee8b525ffcd85ceaba13766413a096464eadab83441aff795af576b2bbf816f717f6da142
7
- data.tar.gz: 9abcdb3c9c911bb924ef64662db96586c5a7b2e1719b3d6d2baabf1c2e7e635d5a22103b45bc7fe5c20b5231c32922afb4bdb425972a42fe367e4984c4f78ea8
6
+ metadata.gz: 5e97a66effe71fc090420174f0bb3224866fc83ff6e42b49019db07bd7b82bcafd7605f592b1b023e7c2fbe9ad90232ad68a50ae73d743b70f5d2efe1a2a4774
7
+ data.tar.gz: 84331025327a5ecfe30874991f13e918c93a05af914637d4c3214c6583123b1b943d43561eb5aed868debbc394ead51e31789099506df61cb5a327738329216f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Poise-Service Changelog
2
2
 
3
+ ## v1.3.0
4
+
5
+ * Allow setting `pid_file_external false` as a provider option for the `sysvinit`
6
+ provider to have non-standard path but keep the internal handling.
7
+ * Improved quoting for environment variables in the `inittab` provider.
8
+
3
9
  ## v1.2.1
4
10
 
5
11
  * [#23](https://github.com/poise/poise-service/pull/23) Fix service templates on AIX and FreeBSD to use the correct root group.
data/README.md CHANGED
@@ -245,6 +245,8 @@ process creating a PID file in the given path.
245
245
  #### Options
246
246
 
247
247
  * `pid_file` – Path to PID file that the service command will create.
248
+ * `pid_file_external` – If true, assume the service will create the PID file
249
+ itself. *(default: true if `pid_file` option is set)*
248
250
  * `template` – Override the default script template. If you want to use a
249
251
  template in a different cookbook use `'cookbook:template'`.
250
252
  * `command` – Override the service command.
@@ -10,6 +10,6 @@ if Process.euid != ent.uid || Process.egid != ent.gid
10
10
  Process::UID.change_privilege(ent.uid) if Process.euid != ent.uid
11
11
  end
12
12
  (ENV["HOME"] = Dir.home("<%= @user %>")) rescue nil
13
- <%= @environment.map {|key, value| "ENV[\"#{key}\"] = \"#{value}\"" }.join("; ") %>
13
+ <%= @environment.map {|key, value| "ENV[#{key.to_s.inspect}] = #{value.to_s.inspect}" }.join("; ") %>
14
14
  exec(*<%= Shellwords.split(@command).inspect %>)
15
15
  EOH
@@ -69,7 +69,7 @@ module PoiseService
69
69
  daemon: daemon,
70
70
  daemon_options: parts[1].to_s,
71
71
  pid_file: pid_file_,
72
- pid_file_external: !!options['pid_file'],
72
+ pid_file_external: options['pid_file_external'].nil? ? !!options['pid_file'] : options['pid_file_external'],
73
73
  platform_family: node['platform_family'],
74
74
  )
75
75
  end
@@ -16,5 +16,5 @@
16
16
 
17
17
 
18
18
  module PoiseService
19
- VERSION = '1.2.1'
19
+ VERSION = '1.3.0'
20
20
  end
@@ -152,6 +152,7 @@ describe PoiseService::Resources::PoiseService::Resource do
152
152
 
153
153
  context 'on Windows' do
154
154
  let(:chefspec_options) { {platform: 'windows', version: '2012R2'} }
155
+ before { allow(Poise::Utils::Win32).to receive(:admin_user).and_return('Administrator') } if defined?(Poise::Utils::Win32)
155
156
  it { is_expected.to eq 'C:\\' }
156
157
  end # /context on Windows
157
158
  end # /context with root
@@ -48,6 +48,22 @@ EOH
48
48
  --exec "myapp" -- --serve
49
49
  EOH
50
50
  end # /context with an external PID file
51
+
52
+
53
+ context 'with a non-default internal PID file' do
54
+ before do
55
+ override_attributes['poise-service']['test'] ||= {}
56
+ override_attributes['poise-service']['test']['pid_file'] = '/tmp/pid'
57
+ override_attributes['poise-service']['test']['pid_file_external'] = false
58
+ end
59
+
60
+ it { is_expected.to render_file('/etc/init.d/test').with_content(<<-EOH) }
61
+ start-stop-daemon --start --quiet --background \\
62
+ --pidfile "/tmp/pid" --make-pidfile \\
63
+ --chuid "root" --chdir "/" \\
64
+ --exec "myapp" -- --serve
65
+ EOH
66
+ end # /context with a non-default internal PID file
51
67
  end # /context on Ubuntu
52
68
 
53
69
  context 'on CentOS' do
@@ -82,6 +98,32 @@ EOH
82
98
  Kernel.exec(*["myapp", "--serve"])
83
99
  EOH
84
100
  end # /context with an external PID file
101
+
102
+ context 'with a non-default internal PID file' do
103
+ before do
104
+ override_attributes['poise-service']['test'] ||= {}
105
+ override_attributes['poise-service']['test']['pid_file'] = '/tmp/pid'
106
+ override_attributes['poise-service']['test']['pid_file_external'] = false
107
+ end
108
+
109
+ it { is_expected.to render_file('/etc/init.d/test').with_content(<<-EOH) }
110
+ pid_file = "/tmp/pid"
111
+ File.unlink(pid_file) if File.exist?(pid_file)
112
+ if Process.fork
113
+ sleep(1) until File.exist?(pid_file)
114
+ else
115
+ Process.daemon(true)
116
+ Dir.chdir("/")
117
+ IO.write(pid_file, Process.pid)
118
+ ent = Etc.getpwnam("root")
119
+ if Process.euid != ent.uid || Process.egid != ent.gid
120
+ Process.initgroups(ent.name, ent.gid)
121
+ Process::GID.change_privilege(ent.gid) if Process.egid != ent.gid
122
+ Process::UID.change_privilege(ent.uid) if Process.euid != ent.uid
123
+ end
124
+ Kernel.exec(*["myapp", "--serve"])
125
+ EOH
126
+ end # /context with a non-default internal PID file
85
127
  end # /context on CentOS
86
128
 
87
129
  context 'with action :disable' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poise-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Kantrowitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-04 00:00:00.000000000 Z
11
+ date: 2016-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: halite