chef 10.30.4-x86-mingw32 → 10.32.0.rc.0-x86-mingw32
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 +7 -0
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/chef-solo.8.html +4 -4
- data/distro/common/html/chef-solr.8.html +5 -5
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +4 -4
- data/distro/common/html/knife-data-bag.1.html +4 -4
- data/distro/common/html/knife-environment.1.html +4 -4
- data/distro/common/html/knife-exec.1.html +4 -4
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +4 -4
- data/distro/common/html/shef.1.html +4 -4
- data/distro/common/man/man1/knife-bootstrap.1 +0 -201
- data/distro/common/man/man1/knife-client.1 +0 -99
- data/distro/common/man/man1/knife-configure.1 +0 -88
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +1 -1
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man1/shef.1 +1 -1
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/lib/chef/api_client.rb +22 -0
- data/lib/chef/checksum_cache.rb +1 -1
- data/lib/chef/provider/service/macosx.rb +69 -15
- data/lib/chef/version.rb +1 -1
- data/spec/unit/api_client_spec.rb +58 -0
- data/spec/unit/provider/service/macosx_spec.rb +29 -11
- metadata +117 -193
@@ -1,88 +0,0 @@
|
|
1
|
-
.\" generated with Ronn/v0.7.3
|
2
|
-
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
|
-
.
|
4
|
-
.TH "KNIFE\-CONFIGURE" "1" "February 2014" "Chef 10.30.4" "Chef Manual"
|
5
|
-
.
|
6
|
-
.SH "NAME"
|
7
|
-
\fBknife\-configure\fR \- Generate configuration files for knife or Chef Client
|
8
|
-
.
|
9
|
-
.SH "SYNOPSIS"
|
10
|
-
\fBknife\fR \fBconfigure\fR [client] \fI(options)\fR
|
11
|
-
.
|
12
|
-
.SH "DESCRIPTION"
|
13
|
-
Generates a knife\.rb configuration file interactively\. When given the \-\-initial option, also creates a new administrative user\.
|
14
|
-
.
|
15
|
-
.SH "CONFIGURE SUBCOMMANDS"
|
16
|
-
\fBknife configure\fR \fI(options)\fR
|
17
|
-
.
|
18
|
-
.TP
|
19
|
-
\fB\-i\fR, \fB\-\-initial\fR
|
20
|
-
Create an initial API Client
|
21
|
-
.
|
22
|
-
.TP
|
23
|
-
\fB\-r\fR, \fB\-\-repository REPO\fR
|
24
|
-
The path to your chef\-repo
|
25
|
-
.
|
26
|
-
.P
|
27
|
-
Create a configuration file for knife\. This will prompt for values to enter into the file\. Default values are listed in square brackets if no other entry is typed\. See \fBknife\fR(1) for a description of configuration options\.
|
28
|
-
.
|
29
|
-
.P
|
30
|
-
\fBknife configure client\fR \fIdirectory\fR
|
31
|
-
.
|
32
|
-
.P
|
33
|
-
Read the \fIknife\.rb\fR config file and generate a config file suitable for use in \fI/etc/chef/client\.rb\fR and copy the validation certificate into the specified \fIdirectory\fR\.
|
34
|
-
.
|
35
|
-
.SH "EXAMPLES"
|
36
|
-
.
|
37
|
-
.IP "\(bu" 4
|
38
|
-
On a freshly installed Chef Server, use \fIknife configure \-i\fR to create an administrator and knife configuration file\. Leave the field blank to accept the default value\. On most systems, the default values are acceptable\.
|
39
|
-
.
|
40
|
-
.IP
|
41
|
-
user@host$ knife configure \-i
|
42
|
-
.
|
43
|
-
.br
|
44
|
-
Please enter the chef server URL: [http://localhost:4000]
|
45
|
-
.
|
46
|
-
.br
|
47
|
-
Please enter a clientname for the new client: [username]
|
48
|
-
.
|
49
|
-
.br
|
50
|
-
Please enter the existing admin clientname: [chef\-webui]
|
51
|
-
.
|
52
|
-
.br
|
53
|
-
Please enter the location of the existing admin client\'s private key: [/etc/chef/webui\.pem]
|
54
|
-
.
|
55
|
-
.br
|
56
|
-
Please enter the validation clientname: [chef\-validator]
|
57
|
-
.
|
58
|
-
.br
|
59
|
-
Please enter the location of the validation key: [/etc/chef/validation\.pem]
|
60
|
-
.
|
61
|
-
.br
|
62
|
-
Please enter the path to a chef repository (or leave blank):
|
63
|
-
.
|
64
|
-
.br
|
65
|
-
Creating initial API user\.\.\.
|
66
|
-
.
|
67
|
-
.br
|
68
|
-
Created (or updated) client[username]
|
69
|
-
.
|
70
|
-
.br
|
71
|
-
Configuration file written to /home/username/\.chef/knife\.rb
|
72
|
-
.
|
73
|
-
.IP
|
74
|
-
This creates a new administrator client named \fIusername\fR, writes a configuration file to \fI/home/username/\.chef/knife\.rb\fR, and the private key to \fI/home/username/\.chef/username\.pem\fR\. The configuration file and private key may be copied to another system to facilitate administration of the Chef Server from a remote system\. Depending on the value given for the Chef Server URL, you may need to modify that setting after copying to a remote host\.
|
75
|
-
.
|
76
|
-
.IP "" 0
|
77
|
-
.
|
78
|
-
.SH "SEE ALSO"
|
79
|
-
\fBknife\fR(1) \fBknife\-client\fR(1)
|
80
|
-
.
|
81
|
-
.SH "AUTHOR"
|
82
|
-
Chef was written by Adam Jacob \fIadam@opscode\.com\fR with many contributions from the community\.
|
83
|
-
.
|
84
|
-
.SH "DOCUMENTATION"
|
85
|
-
This manual page was written by Joshua Timberman \fIjoshua@opscode\.com\fR\. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2\.0 License\.
|
86
|
-
.
|
87
|
-
.SH "CHEF"
|
88
|
-
Knife is distributed with Chef\. \fIhttp://wiki\.opscode\.com/display/chef/Home\fR
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-COOKBOOK\-SITE" "1" "
|
4
|
+
.TH "KNIFE\-COOKBOOK\-SITE" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-cookbook\-site\fR \- Install and update open source cookbooks
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-COOKBOOK" "1" "
|
4
|
+
.TH "KNIFE\-COOKBOOK" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-cookbook\fR \- upload and manage chef cookbooks
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-DATA\-BAG" "1" "
|
4
|
+
.TH "KNIFE\-DATA\-BAG" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-data\-bag\fR \- Store arbitrary data on a Chef Server
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-ENVIRONMENT" "1" "
|
4
|
+
.TH "KNIFE\-ENVIRONMENT" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-environment\fR \- Define cookbook policies for the environments in your infrastructure
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-EXEC" "1" "
|
4
|
+
.TH "KNIFE\-EXEC" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-exec\fR \- Run user scripts using the Chef API DSL
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-INDEX" "1" "
|
4
|
+
.TH "KNIFE\-INDEX" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-index\fR \- Rebuild the search index on a Chef Server
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-NODE" "1" "
|
4
|
+
.TH "KNIFE\-NODE" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-node\fR \- Manage the hosts in your infrastructure
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-ROLE" "1" "
|
4
|
+
.TH "KNIFE\-ROLE" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-role\fR \- Group common configuration settings
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-SEARCH" "1" "
|
4
|
+
.TH "KNIFE\-SEARCH" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-search\fR \- Find objects on a Chef Server by query
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-SSH" "1" "
|
4
|
+
.TH "KNIFE\-SSH" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-ssh\fR \- Run a command or interactive session on multiple remote hosts
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-STATUS" "1" "
|
4
|
+
.TH "KNIFE\-STATUS" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-status\fR \- Display status information for the nodes in your infrastructure
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE\-TAG" "1" "
|
4
|
+
.TH "KNIFE\-TAG" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\-tag\fR \- Apply tags to nodes on a Chef Server
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "KNIFE" "1" "
|
4
|
+
.TH "KNIFE" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBknife\fR \- Chef Server API client utility
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "SHEF" "1" "
|
4
|
+
.TH "SHEF" "1" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBshef\fR \- Interactive Chef Console
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-CLIENT" "8" "
|
4
|
+
.TH "CHEF\-CLIENT" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-client\fR \- Runs a client node connecting to a chef\-server\.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-EXPANDER" "8" "
|
4
|
+
.TH "CHEF\-EXPANDER" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-expander\fR \- fetches messages from RabbitMQ, processes, and loads into chef\-solr
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-EXPANDERCTL" "8" "
|
4
|
+
.TH "CHEF\-EXPANDERCTL" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-expanderctl\fR \- management program for chef\-expander
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-SERVER\-WEBUI" "8" "
|
4
|
+
.TH "CHEF\-SERVER\-WEBUI" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-server\-webui\fR \- Start the Chef Server merb application slice providing Web User Interface (Management Console)\.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-SERVER" "8" "
|
4
|
+
.TH "CHEF\-SERVER" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-server\fR \- Start the Chef Server merb application slice\.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-SOLO" "8" "
|
4
|
+
.TH "CHEF\-SOLO" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-solo\fR \- Runs chef in solo mode against a specified cookbook location\.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "CHEF\-SOLR" "8" "
|
4
|
+
.TH "CHEF\-SOLR" "8" "March 2014" "Chef 10.32.0.rc.0" "Chef Manual"
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBchef\-solr\fR \- Runs as Chef\'s search server
|
data/lib/chef/api_client.rb
CHANGED
@@ -239,6 +239,9 @@ class Chef
|
|
239
239
|
|
240
240
|
# Save this client via the REST API, returns a hash including the private key
|
241
241
|
def save(new_key=false, validation=false)
|
242
|
+
# Implement CHEF-4373 with minimal churn to existing code:
|
243
|
+
return register_with_self_generated_key if new_key && validation && Chef::Config.local_key_generation
|
244
|
+
|
242
245
|
if validation
|
243
246
|
r = Chef::REST.new(Chef::Config[:chef_server_url], Chef::Config[:validation_client_name], Chef::Config[:validation_key])
|
244
247
|
else
|
@@ -257,6 +260,25 @@ class Chef
|
|
257
260
|
end
|
258
261
|
end
|
259
262
|
|
263
|
+
def register_with_self_generated_key
|
264
|
+
r = Chef::REST.new(Chef::Config[:chef_server_url], Chef::Config[:validation_client_name], Chef::Config[:validation_key])
|
265
|
+
pkey = OpenSSL::PKey::RSA.generate(2048)
|
266
|
+
client_data = {:name => name, :admin => false , :public_key => pkey.public_key.to_pem}
|
267
|
+
# First, try and create a new registration
|
268
|
+
r = begin
|
269
|
+
r.post_rest("clients", client_data)
|
270
|
+
rescue Net::HTTPServerException => e
|
271
|
+
# If that fails, go ahead and try and update it
|
272
|
+
if e.response.code == "409"
|
273
|
+
r.put_rest("clients/#{name}", client_data)
|
274
|
+
else
|
275
|
+
raise e
|
276
|
+
end
|
277
|
+
end
|
278
|
+
private_key(pkey.to_pem)
|
279
|
+
self
|
280
|
+
end
|
281
|
+
|
260
282
|
def reregister
|
261
283
|
r = Chef::REST.new(Chef::Config[:chef_server_url])
|
262
284
|
reregistered_self = r.put_rest("clients/#{name}", { :name => name, :admin => admin, :private_key => true })
|
data/lib/chef/checksum_cache.rb
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'chef/provider/service'
|
20
|
+
require 'rexml/document'
|
20
21
|
|
21
22
|
class Chef
|
22
23
|
class Provider
|
@@ -35,6 +36,7 @@ class Chef
|
|
35
36
|
@current_resource.service_name(@new_resource.service_name)
|
36
37
|
@plist_size = 0
|
37
38
|
@plist = find_service_plist
|
39
|
+
@service_label = find_service_label
|
38
40
|
set_service_status
|
39
41
|
|
40
42
|
@current_resource
|
@@ -42,14 +44,6 @@ class Chef
|
|
42
44
|
|
43
45
|
def define_resource_requirements
|
44
46
|
#super
|
45
|
-
requirements.assert(:enable) do |a|
|
46
|
-
a.failure_message Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :enable"
|
47
|
-
end
|
48
|
-
|
49
|
-
requirements.assert(:disable) do |a|
|
50
|
-
a.failure_message Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :disable"
|
51
|
-
end
|
52
|
-
|
53
47
|
requirements.assert(:reload) do |a|
|
54
48
|
a.failure_message Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :reload"
|
55
49
|
end
|
@@ -59,16 +53,21 @@ class Chef
|
|
59
53
|
a.failure_message Chef::Exceptions::Service, "Several plist files match service name. Please use full service name."
|
60
54
|
end
|
61
55
|
|
56
|
+
requirements.assert(:all_actions) do |a|
|
57
|
+
a.assertion { !@service_label.to_s.empty? }
|
58
|
+
a.failure_message Chef::Exceptions::Service,
|
59
|
+
"Could not find service's label in plist file '#{@plist}'!"
|
60
|
+
end
|
61
|
+
|
62
62
|
requirements.assert(:all_actions) do |a|
|
63
63
|
a.assertion { @plist_size > 0 }
|
64
|
-
# No
|
64
|
+
# No failure here in original code - so we also will not
|
65
65
|
# fail. Instead warn that the service is potentially missing
|
66
66
|
a.whyrun "Assuming that the service would have been previously installed and is currently disabled." do
|
67
67
|
@current_resource.enabled(false)
|
68
68
|
@current_resource.running(false)
|
69
69
|
end
|
70
70
|
end
|
71
|
-
|
72
71
|
end
|
73
72
|
|
74
73
|
def start_service
|
@@ -105,19 +104,56 @@ class Chef
|
|
105
104
|
end
|
106
105
|
end
|
107
106
|
|
107
|
+
# On OS/X, enabling a service has the side-effect of starting it,
|
108
|
+
# and disabling a service has the side-effect of stopping it.
|
109
|
+
#
|
110
|
+
# This makes some sense on OS/X since launchctl is an "init"-style
|
111
|
+
# supervisor that will restart daemons that are crashing, etc.
|
112
|
+
def enable_service
|
113
|
+
if @current_resource.enabled
|
114
|
+
Chef::Log.debug("#{@new_resource} already enabled, not enabling")
|
115
|
+
else
|
116
|
+
shell_out!(
|
117
|
+
"launchctl load -w '#{@plist}'",
|
118
|
+
:user => @owner_uid, :group => @owner_gid
|
119
|
+
)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def disable_service
|
124
|
+
unless @current_resource.enabled
|
125
|
+
Chef::Log.debug("#{@new_resource} not enabled, not disabling")
|
126
|
+
else
|
127
|
+
shell_out!(
|
128
|
+
"launchctl unload -w '#{@plist}'",
|
129
|
+
:user => @owner_uid, :group => @owner_gid
|
130
|
+
)
|
131
|
+
end
|
132
|
+
end
|
108
133
|
|
109
134
|
def set_service_status
|
110
|
-
return if @plist == nil
|
135
|
+
return if @plist == nil or @service_label.to_s.empty?
|
111
136
|
|
112
|
-
|
137
|
+
cmd = shell_out(
|
138
|
+
"launchctl list #{@service_label}",
|
139
|
+
:user => @owner_uid, :group => @owner_gid
|
140
|
+
)
|
141
|
+
|
142
|
+
if cmd.exitstatus == 0
|
143
|
+
@current_resource.enabled(true)
|
144
|
+
else
|
145
|
+
@current_resource.enabled(false)
|
146
|
+
end
|
113
147
|
|
114
148
|
if @current_resource.enabled
|
115
149
|
@owner_uid = ::File.stat(@plist).uid
|
116
150
|
@owner_gid = ::File.stat(@plist).gid
|
117
151
|
|
118
|
-
shell_out!(
|
152
|
+
shell_out!(
|
153
|
+
"launchctl list", :user => @owner_uid, :group => @owner_gid
|
154
|
+
).stdout.each_line do |line|
|
119
155
|
case line
|
120
|
-
when /(\d+|-)\s+(?:\d+|-)\s+(.*\.?)#{@
|
156
|
+
when /(\d+|-)\s+(?:\d+|-)\s+(.*\.?)#{@service_label}/
|
121
157
|
pid = $1
|
122
158
|
@current_resource.running(!pid.to_i.zero?)
|
123
159
|
end
|
@@ -129,9 +165,27 @@ class Chef
|
|
129
165
|
|
130
166
|
private
|
131
167
|
|
168
|
+
def find_service_label
|
169
|
+
# Most services have the same internal label as the name of the
|
170
|
+
# plist file. However, there is no rule saying that *has* to be
|
171
|
+
# the case, and some core services (notably, ssh) do not follow
|
172
|
+
# this rule.
|
173
|
+
|
174
|
+
# plist files can come in XML or Binary formats. this command
|
175
|
+
# will make sure we get XML every time.
|
176
|
+
plist_xml = shell_out!("plutil -convert xml1 -o - #{@plist}").stdout
|
177
|
+
|
178
|
+
plist_doc = REXML::Document.new(plist_xml)
|
179
|
+
plist_doc.elements[
|
180
|
+
"/plist/dict/key[text()='Label']/following::string[1]/text()"]
|
181
|
+
end
|
182
|
+
|
132
183
|
def find_service_plist
|
133
184
|
plists = PLIST_DIRS.inject([]) do |results, dir|
|
134
|
-
|
185
|
+
edir = ::File.expand_path(dir)
|
186
|
+
entries = Dir.glob(
|
187
|
+
"#{edir}/*#{@current_resource.service_name}*.plist"
|
188
|
+
)
|
135
189
|
entries.any? ? results << entries : results
|
136
190
|
end
|
137
191
|
plists.flatten!
|