121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'lib/chef/provider/service/windows.rb', line 121
def stop_service
if Win32::Service.exists?(@new_resource.service_name)
state = current_state
if state == RUNNING
if @new_resource.stop_command
logger.trace "#{@new_resource} stopping service using the given stop_command"
shell_out!(@new_resource.stop_command)
else
spawn_command_thread do
Win32::Service.stop(@new_resource.service_name)
end
wait_for_state(STOPPED)
end
@new_resource.updated_by_last_action(true)
elsif state == STOPPED
logger.debug "#{@new_resource} already stopped - nothing to do"
elsif state == STOP_PENDING
logger.trace "#{@new_resource} already sent stop signal - waiting for stop"
wait_for_state(STOPPED)
else
raise Chef::Exceptions::Service, "Service #{@new_resource} can't be stopped from state [#{state}]"
end
else
logger.debug "#{@new_resource} does not exist - nothing to do"
end
end
|