chef 0.10.0.beta.6 → 0.10.0.beta.7
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.
- data/lib/chef/application.rb +3 -0
- data/lib/chef/application/client.rb +34 -2
- data/lib/chef/checksum.rb +2 -2
- data/lib/chef/checksum_cache.rb +2 -2
- data/lib/chef/client.rb +7 -5
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -1
- data/lib/chef/cookbook/syntax_check.rb +2 -2
- data/lib/chef/cookbook_version.rb +5 -0
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/environment.rb +31 -9
- data/lib/chef/file_access_control.rb +7 -3
- data/lib/chef/index_queue/indexable.rb +2 -2
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +1 -1
- data/lib/chef/knife/cookbook_site_install.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +2 -2
- data/lib/chef/knife/cookbook_upload.rb +32 -11
- data/lib/chef/knife/core/subcommand_loader.rb +24 -13
- data/lib/chef/knife/core/text_formatter.rb +2 -2
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/search.rb +1 -1
- data/lib/chef/knife/ssh.rb +1 -0
- data/lib/chef/mixin/shell_out.rb +2 -2
- data/lib/chef/node.rb +7 -4
- data/lib/chef/provider/cookbook_file.rb +4 -5
- data/lib/chef/provider/cron.rb +3 -3
- data/lib/chef/provider/cron/solaris.rb +7 -7
- data/lib/chef/provider/deploy.rb +52 -29
- data/lib/chef/provider/directory.rb +8 -8
- data/lib/chef/provider/env.rb +8 -8
- data/lib/chef/provider/erl_call.rb +7 -6
- data/lib/chef/provider/execute.rb +7 -2
- data/lib/chef/provider/file.rb +9 -9
- data/lib/chef/provider/git.rb +17 -8
- data/lib/chef/provider/group.rb +6 -6
- data/lib/chef/provider/group/aix.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/gpasswd.rb +3 -3
- data/lib/chef/provider/group/groupadd.rb +1 -1
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +9 -7
- data/lib/chef/provider/link.rb +27 -24
- data/lib/chef/provider/mdadm.rb +10 -10
- data/lib/chef/provider/mount.rb +10 -13
- data/lib/chef/provider/mount/mount.rb +10 -10
- data/lib/chef/provider/mount/windows.rb +4 -3
- data/lib/chef/provider/ohai.rb +2 -1
- data/lib/chef/provider/package.rb +10 -6
- data/lib/chef/provider/package/apt.rb +18 -18
- data/lib/chef/provider/package/dpkg.rb +3 -3
- data/lib/chef/provider/package/easy_install.rb +2 -2
- data/lib/chef/provider/package/freebsd.rb +4 -5
- data/lib/chef/provider/package/macports.rb +2 -2
- data/lib/chef/provider/package/pacman.rb +2 -2
- data/lib/chef/provider/package/portage.rb +1 -1
- data/lib/chef/provider/package/rpm.rb +3 -3
- data/lib/chef/provider/package/rubygems.rb +7 -7
- data/lib/chef/provider/package/solaris.rb +9 -9
- data/lib/chef/provider/package/yum.rb +4 -4
- data/lib/chef/provider/package/zypper.rb +5 -11
- data/lib/chef/provider/remote_directory.rb +15 -14
- data/lib/chef/provider/remote_file.rb +11 -12
- data/lib/chef/provider/route.rb +8 -10
- data/lib/chef/provider/ruby_block.rb +1 -0
- data/lib/chef/provider/service.rb +10 -16
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +16 -18
- data/lib/chef/provider/service/gentoo.rb +2 -3
- data/lib/chef/provider/service/simple.rb +7 -5
- data/lib/chef/provider/service/upstart.rb +8 -8
- data/lib/chef/provider/service/windows.rb +3 -3
- data/lib/chef/provider/subversion.rb +12 -9
- data/lib/chef/provider/template.rb +2 -3
- data/lib/chef/provider/user.rb +13 -14
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/pw.rb +4 -4
- data/lib/chef/provider/user/useradd.rb +3 -3
- data/lib/chef/provider/user/windows.rb +3 -3
- data/lib/chef/resource.rb +4 -3
- data/lib/chef/resource/deploy.rb +1 -1
- data/lib/chef/rest/rest_request.rb +2 -2
- data/lib/chef/run_context.rb +1 -1
- data/lib/chef/shell_out.rb +13 -1
- data/lib/chef/solr_query.rb +1 -1
- data/lib/chef/solr_query/solr_http_request.rb +1 -1
- data/lib/chef/tasks/chef_repo.rake +74 -0
- data/lib/chef/version.rb +1 -1
- metadata +2 -2
@@ -126,7 +126,7 @@ class Chef
|
|
126
126
|
|
127
127
|
# Expect [ { :version => "ver", :release => "rel" }, { :version => "ver", :release => "rel" }, { :version => "ver", :release => "rel" } ] ???
|
128
128
|
matching_versions.each do |ver|
|
129
|
-
Chef::Log.debug("#{
|
129
|
+
Chef::Log.debug("#{@new_resource} trying to match #{desired_version} to version #{ver[:version]} and release #{ver[:release]}")
|
130
130
|
if (desired_version == "#{ver[:version]}-#{ver[:release]}")
|
131
131
|
return true
|
132
132
|
end
|
@@ -176,7 +176,7 @@ class Chef
|
|
176
176
|
raise Chef::Exceptions::Package, "Package #{@new_resource.name} not found: #{@new_resource.source}"
|
177
177
|
end
|
178
178
|
|
179
|
-
Chef::Log.debug("
|
179
|
+
Chef::Log.debug("#{@new_resource} checking rpm status")
|
180
180
|
status = popen4("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@new_resource.source}") do |pid, stdin, stdout, stderr|
|
181
181
|
stdout.each do |line|
|
182
182
|
case line
|
@@ -188,7 +188,7 @@ class Chef
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
|
-
Chef::Log.debug("
|
191
|
+
Chef::Log.debug("#{@new_resource} checking yum info for #{@new_resource.package_name}#{yum_arch}")
|
192
192
|
|
193
193
|
@yum.refresh
|
194
194
|
|
@@ -201,7 +201,7 @@ class Chef
|
|
201
201
|
else
|
202
202
|
@candidate_version = installed_version
|
203
203
|
end
|
204
|
-
Chef::Log.debug("#{@
|
204
|
+
Chef::Log.debug("#{@new_resource} installed version: #{installed_version} candidate version: #{candidate_version}")
|
205
205
|
|
206
206
|
@current_resource
|
207
207
|
end
|
@@ -35,24 +35,24 @@ class Chef
|
|
35
35
|
is_out_of_date=false
|
36
36
|
version=''
|
37
37
|
oud_version=''
|
38
|
-
Chef::Log.debug("
|
38
|
+
Chef::Log.debug("#{@new_resource} checking zypper")
|
39
39
|
status = popen4("zypper info #{@new_resource.package_name}") do |pid, stdin, stdout, stderr|
|
40
40
|
stdout.each do |line|
|
41
41
|
case line
|
42
42
|
when /^Version: (.+)$/
|
43
43
|
version = $1
|
44
|
-
Chef::Log.debug("
|
44
|
+
Chef::Log.debug("#{@new_resource} version #{$1}")
|
45
45
|
when /^Installed: Yes$/
|
46
46
|
is_installed=true
|
47
|
-
Chef::Log.debug("
|
47
|
+
Chef::Log.debug("#{@new_resource} is installed")
|
48
48
|
|
49
49
|
when /^Installed: No$/
|
50
50
|
is_installed=false
|
51
|
-
Chef::Log.debug("
|
51
|
+
Chef::Log.debug("#{@new_resource} is not installed")
|
52
52
|
when /^Status: out-of-date \(version (.+) installed\)$/
|
53
53
|
is_out_of_date=true
|
54
54
|
oud_version=$1
|
55
|
-
Chef::Log.debug("
|
55
|
+
Chef::Log.debug("#{@new_resource} out of date version #{$1}")
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -60,28 +60,22 @@ class Chef
|
|
60
60
|
if is_installed==false
|
61
61
|
@candidate_version=version
|
62
62
|
@current_resource.version(nil)
|
63
|
-
Chef::Log.debug("dentro installed false");
|
64
63
|
end
|
65
64
|
|
66
65
|
if is_installed==true
|
67
66
|
if is_out_of_date==true
|
68
67
|
@current_resource.version(oud_version)
|
69
68
|
@candidate_version=version
|
70
|
-
Chef::Log.debug("dentro installed outofdate");
|
71
69
|
else
|
72
70
|
@current_resource.version(version)
|
73
71
|
@candidate_version=version
|
74
|
-
Chef::Log.debug("dentro installed");
|
75
72
|
end
|
76
73
|
end
|
77
74
|
|
78
|
-
|
79
75
|
unless status.exitstatus == 0
|
80
76
|
raise Chef::Exceptions::Package, "zypper failed - #{status.inspect}!"
|
81
77
|
end
|
82
|
-
|
83
78
|
|
84
|
-
Chef::Log.debug("zypper current resource #{@current_resource}")
|
85
79
|
@current_resource
|
86
80
|
end
|
87
81
|
|
@@ -6,9 +6,9 @@
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
8
8
|
# You may obtain a copy of the License at
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@@ -32,8 +32,7 @@ class Chef
|
|
32
32
|
|
33
33
|
def action_create
|
34
34
|
super
|
35
|
-
|
36
|
-
|
35
|
+
|
37
36
|
files_to_purge = Set.new(
|
38
37
|
Dir.glob(::File.join(@new_resource.path, '**', '*'), ::File::FNM_DOTMATCH).select do |name|
|
39
38
|
name !~ /(?:^|#{Regexp.escape(::File::SEPARATOR)})\.\.?$/
|
@@ -45,6 +44,8 @@ class Chef
|
|
45
44
|
files_to_purge.delete(::File.join(@new_resource.path, cookbook_file_relative_path))
|
46
45
|
end
|
47
46
|
purge_unmanaged_files(files_to_purge)
|
47
|
+
Chef::Log.info("#{@new_resource} created")
|
48
|
+
@new_resource.updated_by_last_action(true)
|
48
49
|
end
|
49
50
|
|
50
51
|
def action_create_if_missing
|
@@ -59,11 +60,11 @@ class Chef
|
|
59
60
|
if @new_resource.purge
|
60
61
|
unmanaged_files.sort.reverse.each do |f|
|
61
62
|
if ::File.directory?(f)
|
62
|
-
Chef::Log.debug("Removing directory #{f}")
|
63
63
|
Dir::rmdir(f)
|
64
|
+
Chef::Log.debug("#{@new_resource} removed directory #{f}")
|
64
65
|
else
|
65
|
-
Chef::Log.debug("Deleting file #{f}")
|
66
66
|
::File.delete(f)
|
67
|
+
Chef::Log.debug("#{@new_resource} deleted file #{f}")
|
67
68
|
end
|
68
69
|
end
|
69
70
|
end
|
@@ -74,15 +75,15 @@ class Chef
|
|
74
75
|
files = cookbook.relative_filenames_in_preferred_directory(node, :files, @new_resource.source)
|
75
76
|
files.sort.reverse
|
76
77
|
end
|
77
|
-
|
78
|
+
|
78
79
|
def directory_root_in_cookbook_cache
|
79
80
|
@directory_root_in_cookbook_cache ||= begin
|
80
81
|
cookbook = run_context.cookbook_collection[resource_cookbook]
|
81
82
|
cookbook.preferred_filename_on_disk_location(node, :files, @new_resource.source, @new_resource.path)
|
82
83
|
end
|
83
84
|
end
|
84
|
-
|
85
|
-
# Determine the cookbook to get the file from. If new resource sets an
|
85
|
+
|
86
|
+
# Determine the cookbook to get the file from. If new resource sets an
|
86
87
|
# explicit cookbook, use it, otherwise fall back to the implicit cookbook
|
87
88
|
# i.e., the cookbook the resource was declared in.
|
88
89
|
def resource_cookbook
|
@@ -91,9 +92,9 @@ class Chef
|
|
91
92
|
|
92
93
|
def create_cookbook_file(cookbook_file_relative_path)
|
93
94
|
full_path = ::File.join(@new_resource.path, cookbook_file_relative_path)
|
94
|
-
|
95
|
+
|
95
96
|
ensure_directory_exists(::File.dirname(full_path))
|
96
|
-
|
97
|
+
|
97
98
|
file_to_fetch = cookbook_file_resource(full_path, cookbook_file_relative_path)
|
98
99
|
if @new_resource.overwrite
|
99
100
|
file_to_fetch.run_action(:create)
|
@@ -102,7 +103,7 @@ class Chef
|
|
102
103
|
end
|
103
104
|
@new_resource.updated_by_last_action(true) if file_to_fetch.updated?
|
104
105
|
end
|
105
|
-
|
106
|
+
|
106
107
|
def cookbook_file_resource(target_path, relative_source_path)
|
107
108
|
cookbook_file = Chef::Resource::CookbookFile.new(target_path, run_context)
|
108
109
|
cookbook_file.cookbook_name = @new_resource.cookbook || @new_resource.cookbook_name
|
@@ -111,10 +112,10 @@ class Chef
|
|
111
112
|
cookbook_file.group(@new_resource.files_group) if @new_resource.files_group
|
112
113
|
cookbook_file.owner(@new_resource.files_owner) if @new_resource.files_owner
|
113
114
|
cookbook_file.backup(@new_resource.files_backup) if @new_resource.files_backup
|
114
|
-
|
115
|
+
|
115
116
|
cookbook_file
|
116
117
|
end
|
117
|
-
|
118
|
+
|
118
119
|
def ensure_directory_exists(path)
|
119
120
|
unless ::File.directory?(path)
|
120
121
|
directory_to_create = resource_for_directory(path)
|
@@ -34,18 +34,18 @@ class Chef
|
|
34
34
|
def action_create
|
35
35
|
assert_enclosing_directory_exists!
|
36
36
|
|
37
|
-
Chef::Log.debug("
|
37
|
+
Chef::Log.debug("#{@new_resource} checking for changes")
|
38
38
|
|
39
39
|
if current_resource_matches_target_checksum?
|
40
|
-
Chef::Log.debug("
|
40
|
+
Chef::Log.debug("#{@new_resource} checksum matches target checksum (#{@new_resource.checksum}) - not updating")
|
41
41
|
else
|
42
42
|
Chef::REST.new(@new_resource.source, nil, nil).fetch(@new_resource.source) do |raw_file|
|
43
43
|
if matches_current_checksum?(raw_file)
|
44
|
-
Chef::Log.debug "#{@new_resource}
|
44
|
+
Chef::Log.debug "#{@new_resource} target and source checksums are the same - not updating"
|
45
45
|
else
|
46
46
|
backup_new_resource
|
47
|
-
Chef::Log.debug "copying remote file from origin #{raw_file.path} to destination #{@new_resource.path}"
|
48
47
|
FileUtils.cp raw_file.path, @new_resource.path
|
48
|
+
Chef::Log.info "#{@new_resource} updated"
|
49
49
|
@new_resource.updated_by_last_action(true)
|
50
50
|
end
|
51
51
|
end
|
@@ -57,7 +57,7 @@ class Chef
|
|
57
57
|
|
58
58
|
def action_create_if_missing
|
59
59
|
if ::File.exists?(@new_resource.path)
|
60
|
-
Chef::Log.debug("
|
60
|
+
Chef::Log.debug("#{@new_resource} exists, taking no action.")
|
61
61
|
else
|
62
62
|
action_create
|
63
63
|
end
|
@@ -74,24 +74,23 @@ class Chef
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def matches_current_checksum?(candidate_file)
|
77
|
-
Chef::Log.debug "#{@new_resource}
|
77
|
+
Chef::Log.debug "#{@new_resource} checking for file existence of #{@new_resource.path}"
|
78
78
|
if ::File.exists?(@new_resource.path)
|
79
|
-
Chef::Log.debug "#{@new_resource}
|
79
|
+
Chef::Log.debug "#{@new_resource} file exists at #{@new_resource.path}"
|
80
80
|
@new_resource.checksum(checksum(candidate_file.path))
|
81
|
-
Chef::Log.debug "#{@new_resource}
|
82
|
-
Chef::Log.debug "#{@new_resource}
|
81
|
+
Chef::Log.debug "#{@new_resource} target checksum: #{@current_resource.checksum}"
|
82
|
+
Chef::Log.debug "#{@new_resource} source checksum: #{@new_resource.checksum}"
|
83
83
|
|
84
84
|
@new_resource.checksum == @current_resource.checksum
|
85
85
|
else
|
86
|
-
Chef::Log.
|
86
|
+
Chef::Log.debug "#{@new_resource} creating #{@new_resource.path}"
|
87
87
|
false
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
91
|
def backup_new_resource
|
92
92
|
if ::File.exists?(@new_resource.path)
|
93
|
-
Chef::Log.debug "#{@new_resource}
|
94
|
-
Chef::Log.info "#{@new_resource}: Updating #{@new_resource.path}"
|
93
|
+
Chef::Log.debug "#{@new_resource} checksum changed from #{@current_resource.checksum} to #{@new_resource.checksum}"
|
95
94
|
backup @new_resource.path
|
96
95
|
end
|
97
96
|
end
|
data/lib/chef/provider/route.rb
CHANGED
@@ -63,8 +63,6 @@ class Chef::Provider::Route < Chef::Provider
|
|
63
63
|
def load_current_resource
|
64
64
|
is_running = nil
|
65
65
|
|
66
|
-
Chef::Log.debug("Configuring Route #{@new_resource.name}")
|
67
|
-
|
68
66
|
# cidr or quad dot mask
|
69
67
|
if @new_resource.netmask
|
70
68
|
new_ip = IPAddr.new("#{@new_resource.target}/#{@new_resource.netmask}")
|
@@ -86,7 +84,7 @@ class Chef::Provider::Route < Chef::Provider
|
|
86
84
|
destination = IPAddr.new(destination.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
|
87
85
|
gateway = IPAddr.new(gateway.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
|
88
86
|
mask = IPAddr.new(mask.scan(/../).reverse.to_s.hex, Socket::AF_INET).to_s
|
89
|
-
Chef::Log.debug(
|
87
|
+
Chef::Log.debug("#{@new_resource} system has route: dest=#{destination} mask=#{mask} gw=#{gateway}")
|
90
88
|
|
91
89
|
# check if what were trying to configure is already there
|
92
90
|
# use an ipaddr object with ip/mask this way we can have
|
@@ -94,7 +92,7 @@ class Chef::Provider::Route < Chef::Provider
|
|
94
92
|
# expanding bitmask by hand.
|
95
93
|
#
|
96
94
|
running_ip = IPAddr.new("#{destination}/#{mask}")
|
97
|
-
Chef::Log.debug(
|
95
|
+
Chef::Log.debug("#{@new_resource} new ip: #{new_ip.inspect} running ip: #{running_ip.inspect}")
|
98
96
|
is_running = true if running_ip == new_ip
|
99
97
|
end
|
100
98
|
route_file.close
|
@@ -103,13 +101,13 @@ class Chef::Provider::Route < Chef::Provider
|
|
103
101
|
|
104
102
|
def action_add
|
105
103
|
# check to see if load_current_resource found the route
|
106
|
-
if
|
107
|
-
Chef::Log.debug("
|
104
|
+
if is_running
|
105
|
+
Chef::Log.debug("#{@new_resource} route already active - nothing to do")
|
108
106
|
else
|
109
107
|
command = generate_command(:add)
|
110
108
|
|
111
|
-
Chef::Log.info("Adding route: #{command} ")
|
112
109
|
run_command( :command => command )
|
110
|
+
Chef::Log.info("#{@new_resource} added")
|
113
111
|
@new_resource.updated_by_last_action(true)
|
114
112
|
end
|
115
113
|
|
@@ -121,11 +119,11 @@ class Chef::Provider::Route < Chef::Provider
|
|
121
119
|
if is_running
|
122
120
|
command = generate_command(:delete)
|
123
121
|
|
124
|
-
Chef::Log.info("Removing route: #{command}")
|
125
122
|
run_command( :command => command )
|
123
|
+
Chef::Log.info("#{@new_resource} removed")
|
126
124
|
@new_resource.updated_by_last_action(true)
|
127
125
|
else
|
128
|
-
Chef::Log.debug("
|
126
|
+
Chef::Log.debug("#{@new_resource} route does not exist - nothing to do")
|
129
127
|
end
|
130
128
|
end
|
131
129
|
|
@@ -156,7 +154,7 @@ class Chef::Provider::Route < Chef::Provider
|
|
156
154
|
conf.each do |k, v|
|
157
155
|
network_file = ::File.new("/etc/sysconfig/network-scripts/route-#{k}", "w")
|
158
156
|
network_file.puts(conf[k])
|
159
|
-
Chef::Log.debug("writing route.#{k}\n#{conf[k]}")
|
157
|
+
Chef::Log.debug("#{@new_resource} writing route.#{k}\n#{conf[k]}")
|
160
158
|
network_file.close
|
161
159
|
end
|
162
160
|
end
|
@@ -32,57 +32,52 @@ class Chef
|
|
32
32
|
|
33
33
|
def action_enable
|
34
34
|
if @current_resource.enabled
|
35
|
-
Chef::Log.debug("#{@new_resource}
|
35
|
+
Chef::Log.debug("#{@new_resource} already enabled - nothing to do")
|
36
36
|
else
|
37
|
-
Chef::Log.debug("#{@new_resource}: attempting to enable")
|
38
37
|
if enable_service
|
39
38
|
@new_resource.updated_by_last_action(true)
|
40
|
-
Chef::Log.info("#{@new_resource}
|
39
|
+
Chef::Log.info("#{@new_resource} enabled")
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
44
|
def action_disable
|
46
45
|
if @current_resource.enabled
|
47
|
-
Chef::Log.debug("#{@new_resource}: attempting to disable")
|
48
46
|
if disable_service
|
49
47
|
@new_resource.updated_by_last_action(true)
|
50
|
-
Chef::Log.info("#{@new_resource}
|
48
|
+
Chef::Log.info("#{@new_resource} disabled")
|
51
49
|
end
|
52
50
|
else
|
53
|
-
Chef::Log.debug("#{@new_resource}
|
51
|
+
Chef::Log.debug("#{@new_resource} already disabled - nothing to do")
|
54
52
|
end
|
55
53
|
end
|
56
54
|
|
57
55
|
def action_start
|
58
56
|
unless @current_resource.running
|
59
|
-
Chef::Log.debug("#{@new_resource}: attempting to start")
|
60
57
|
if start_service
|
61
58
|
@new_resource.updated_by_last_action(true)
|
62
|
-
Chef::Log.info("
|
59
|
+
Chef::Log.info("#{@new_resource} started")
|
63
60
|
end
|
64
61
|
else
|
65
|
-
Chef::Log.debug("#{@new_resource}
|
62
|
+
Chef::Log.debug("#{@new_resource} already running - nothing to do")
|
66
63
|
end
|
67
64
|
end
|
68
65
|
|
69
66
|
def action_stop
|
70
67
|
if @current_resource.running
|
71
|
-
Chef::Log.debug("#{@new_resource}: attempting to stop")
|
72
68
|
if stop_service
|
73
69
|
@new_resource.updated_by_last_action(true)
|
74
|
-
Chef::Log.info("#{@new_resource}
|
70
|
+
Chef::Log.info("#{@new_resource} stopped")
|
75
71
|
end
|
76
72
|
else
|
77
|
-
Chef::Log.debug("#{@new_resource}
|
73
|
+
Chef::Log.debug("#{@new_resource} already stopped - nothing to do")
|
78
74
|
end
|
79
75
|
end
|
80
76
|
|
81
77
|
def action_restart
|
82
|
-
Chef::Log.debug("#{@new_resource}: attempting to restart")
|
83
78
|
if restart_service
|
84
79
|
@new_resource.updated_by_last_action(true)
|
85
|
-
Chef::Log.info("#{@new_resource}
|
80
|
+
Chef::Log.info("#{@new_resource} restarted")
|
86
81
|
end
|
87
82
|
end
|
88
83
|
|
@@ -91,10 +86,9 @@ class Chef
|
|
91
86
|
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :reload"
|
92
87
|
end
|
93
88
|
if @current_resource.running
|
94
|
-
Chef::Log.debug("#{@new_resource}: attempting to reload")
|
95
89
|
if reload_service
|
96
90
|
@new_resource.updated_by_last_action(true)
|
97
|
-
Chef::Log.info("#{@new_resource}
|
91
|
+
Chef::Log.info("#{@new_resource} reloaded")
|
98
92
|
end
|
99
93
|
end
|
100
94
|
end
|
@@ -72,7 +72,7 @@ class Chef
|
|
72
72
|
enabled = false
|
73
73
|
|
74
74
|
priority.each { |runlevel, arguments|
|
75
|
-
Chef::Log.debug("
|
75
|
+
Chef::Log.debug("#{@new_resource} runlevel #{runlevel}, action #{arguments[0]}, priority #{arguments[1]}")
|
76
76
|
|
77
77
|
# if we are in a update-rc.d default startup runlevel && we start in this runlevel
|
78
78
|
if (2..5).include?(runlevel.to_i) && arguments[0] == :start
|
@@ -30,20 +30,19 @@ class Chef
|
|
30
30
|
|
31
31
|
# Determine if we're talking about /etc/rc.d or /usr/local/etc/rc.d
|
32
32
|
if ::File.exists?("/etc/rc.d/#{current_resource.service_name}")
|
33
|
-
@init_command = "/etc/rc.d/#{current_resource.service_name}"
|
33
|
+
@init_command = "/etc/rc.d/#{current_resource.service_name}"
|
34
34
|
elsif ::File.exists?("/usr/local/etc/rc.d/#{current_resource.service_name}")
|
35
|
-
@init_command = "/usr/local/etc/rc.d/#{current_resource.service_name}"
|
35
|
+
@init_command = "/usr/local/etc/rc.d/#{current_resource.service_name}"
|
36
36
|
else
|
37
37
|
raise Chef::Exceptions::Service, "#{@new_resource}: unable to locate the rc.d script"
|
38
38
|
end
|
39
|
-
Chef::Log.debug("#{@current_resource
|
40
|
-
|
41
|
-
if @new_resource.supports[:status]
|
42
|
-
Chef::Log.debug("#{@new_resource} supports status, checking state")
|
39
|
+
Chef::Log.debug("#{@current_resource} found at #{@init_command}")
|
43
40
|
|
41
|
+
if @new_resource.supports[:status]
|
44
42
|
begin
|
45
43
|
if run_command(:command => "#{@init_command} status") == 0
|
46
44
|
@current_resource.running true
|
45
|
+
Chef::Log.debug("#{@new_resource} is running")
|
47
46
|
end
|
48
47
|
rescue Chef::Exceptions::Exec
|
49
48
|
@current_resource.running false
|
@@ -51,11 +50,10 @@ class Chef
|
|
51
50
|
end
|
52
51
|
|
53
52
|
elsif @new_resource.status_command
|
54
|
-
Chef::Log.debug("#{@new_resource} doesn't support status but you have specified a status command, running..")
|
55
|
-
|
56
53
|
begin
|
57
54
|
if run_command(:command => @new_resource.status_command) == 0
|
58
55
|
@current_resource.running true
|
56
|
+
Chef::Log.debug("#{@new_resource} is running")
|
59
57
|
end
|
60
58
|
rescue Chef::Exceptions::Exec
|
61
59
|
@current_resource.running false
|
@@ -66,12 +64,12 @@ class Chef
|
|
66
64
|
Chef::Log.debug("#{@new_resource} does not support status and you have not specified a status command, falling back to process table inspection")
|
67
65
|
|
68
66
|
if node[:command][:ps].nil? or node[:command][:ps].empty?
|
69
|
-
raise Chef::Exceptions::Service, "#{@new_resource}
|
67
|
+
raise Chef::Exceptions::Service, "#{@new_resource} could not determine how to inspect the process table, please set this nodes 'ps' attribute"
|
70
68
|
end
|
71
69
|
|
72
70
|
status = popen4(node[:command][:ps]) do |pid, stdin, stdout, stderr|
|
73
71
|
r = Regexp.new(@new_resource.pattern)
|
74
|
-
Chef::Log.debug("#{@new_resource}
|
72
|
+
Chef::Log.debug("#{@new_resource} attempting to match #{@new_resource.pattern} (#{r}) against process table")
|
75
73
|
stdout.each_line do |line|
|
76
74
|
if r.match(line)
|
77
75
|
@current_resource.running true
|
@@ -83,7 +81,7 @@ class Chef
|
|
83
81
|
unless status.exitstatus == 0
|
84
82
|
raise Chef::Exceptions::Service, "Command #{node[:command][:ps]} failed"
|
85
83
|
else
|
86
|
-
Chef::Log.debug("#{@new_resource}
|
84
|
+
Chef::Log.debug("#{@new_resource} #{node[:command][:ps]} exited and parsed successfully, process running: #{@current_resource.running}")
|
87
85
|
end
|
88
86
|
end
|
89
87
|
|
@@ -102,21 +100,21 @@ class Chef
|
|
102
100
|
unless @current_resource.enabled
|
103
101
|
Chef::Log.debug("#{@new_resource.name} enable/disable state unknown")
|
104
102
|
end
|
105
|
-
|
103
|
+
|
106
104
|
@current_resource
|
107
105
|
end
|
108
106
|
|
109
107
|
def read_rc_conf
|
110
108
|
::File.open("/etc/rc.conf", 'r') { |file| file.readlines }
|
111
109
|
end
|
112
|
-
|
110
|
+
|
113
111
|
def write_rc_conf(lines)
|
114
112
|
::File.open("/etc/rc.conf", 'w') do |file|
|
115
113
|
lines.each { |line| file.puts(line) }
|
116
114
|
end
|
117
115
|
end
|
118
|
-
|
119
|
-
|
116
|
+
|
117
|
+
|
120
118
|
# The variable name used in /etc/rc.conf for enabling this service
|
121
119
|
def service_enable_variable_name
|
122
120
|
# Look for name="foo" in the shell script @init_command. Use this for determining the variable name in /etc/rc.conf
|
@@ -132,7 +130,7 @@ class Chef
|
|
132
130
|
end
|
133
131
|
raise Chef::Exceptions::Service, "Could not find name=\"service\" line in #{@init_command}"
|
134
132
|
end
|
135
|
-
|
133
|
+
|
136
134
|
def set_service_enable(value)
|
137
135
|
lines = read_rc_conf
|
138
136
|
# Remove line that set the old value
|
@@ -141,7 +139,7 @@ class Chef
|
|
141
139
|
lines << "#{service_enable_variable_name}=\"#{value}\""
|
142
140
|
write_rc_conf(lines)
|
143
141
|
end
|
144
|
-
|
142
|
+
|
145
143
|
def enable_service()
|
146
144
|
set_service_enable("YES") unless @current_resource.enabled
|
147
145
|
end
|
@@ -149,7 +147,7 @@ class Chef
|
|
149
147
|
def disable_service()
|
150
148
|
set_service_enable("NO") if @current_resource.enabled
|
151
149
|
end
|
152
|
-
|
150
|
+
|
153
151
|
end
|
154
152
|
end
|
155
153
|
end
|