diff options
author | sersut <serdar@opscode.com> | 2013-03-01 16:05:30 -0800 |
---|---|---|
committer | sersut <serdar@opscode.com> | 2013-03-01 16:05:44 -0800 |
commit | 4ff5244fccf0ac8b24902e4166d6df93559252f6 (patch) | |
tree | 1ebd34765a4faa55dff9b26856dec9273da7bc99 /distro | |
parent | f6027a5a837466dc7d416a1a7980dd2681b1f095 (diff) | |
download | chef-4ff5244fccf0ac8b24902e4166d6df93559252f6.tar.gz |
Fix test failures due to windows_service_manager...
Diffstat (limited to 'distro')
-rw-r--r-- | distro/windows/service_manager.rb | 148 |
1 files changed, 2 insertions, 146 deletions
diff --git a/distro/windows/service_manager.rb b/distro/windows/service_manager.rb index 8d71448d6e..b63c6badc2 100644 --- a/distro/windows/service_manager.rb +++ b/distro/windows/service_manager.rb @@ -16,149 +16,5 @@ # limitations under the License. # -require 'win32/service' -require 'rbconfig' -require 'mixlib/cli' - -class Chef - class Windows - class ServiceManager - include Config - include Mixlib::CLI - - option :action, - :short => "-a ACTION", - :long => "--action ACTION", - :default => "start", - :description => "Action to carry out on the resource; one of 'install', 'uninstall', 'start', 'stop', 'pause', or 'resume'" - - option :name, - :short => "-n NAME", - :long => "--name NAME", - :default => "chef-client", - :description => "The service name to use." - - option :display_name, - :long => "--display_name NAME", - :default => "chef-client", - :description => "The display name to use for the service." - - option :description, - :short => "-d DESCRIPTION", - :long => "--description DESCRIPTION", - :default => "chef-client", - :description => "The description for the service." - - option :config_file, - :short => "-c CONFIG", - :long => "--config CONFIG", - :default => "#{ENV['SYSTEMDRIVE']}/chef/client.rb", - :description => "The configuration file to use" - - option :log_location, - :short => "-L LOGLOCATION", - :long => "--logfile LOGLOCATION", - :description => "Set the log file location", - :default => "#{ENV['SYSTEMDRIVE']}/chef/client.log" - - option :splay, - :short => "-s SECONDS", - :long => "--splay SECONDS", - :description => "The splay time for running at intervals, in seconds", - :proc => lambda { |s| s.to_i } - - option :interval, - :short => "-i SECONDS", - :long => "--interval SECONDS", - :description => "Set the number of seconds to wait between chef-client runs", - :proc => lambda { |s| s.to_i } - - option :help, - :short => "-h", - :long => "--help", - :description => "Show this message", - :on => :tail, - :boolean => true, - :show_options => true, - :exit => 0 - - def run - parse_options - - case config[:action] - when 'install' - ruby = File.join(RbConfig::CONFIG['bindir'], 'ruby') - path = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'chef', 'application', 'windows_service.rb')) - - opts = "" - opts << " -c #{config[:config_file]}" if config[:config_file] - opts << " -L #{config[:log_location]}" if config[:log_location] - opts << " -i #{config[:interval]}" if config[:interval] - opts << " -s #{config[:splay]}" if config[:splay] - - # Quote the full paths to deal with possible spaces in the path name. - # Also ensure all forward slashes are backslashes - cmd = "\"#{ruby}\" \"#{path}\" #{opts}".gsub(File::SEPARATOR, File::ALT_SEPARATOR) - - Win32::Service.new( - :service_name => config[:name], - :display_name => config[:display_name], - :description => config[:description], - :binary_path_name => cmd) - puts "Service '#{config[:name]}' has successfully been 'installed'." - when 'start' - # TODO: allow override of startup parameters here? - take_action('start', RUNNING) if Win32::Service.exists?(config[:name]) - when 'stop' - take_action('stop', STOPPED) if Win32::Service.exists?(config[:name]) - when 'uninstall', 'delete' - take_action('stop', STOPPED) - if Win32::Service.exists?(config[:name]) - Win32::Service.delete(config[:name]) - puts "Service #{config[:name]} deleted" - end - when 'pause' - take_action('pause', PAUSED) - when 'resume' - take_action('resume', RUNNING) - end - end - - private - - # Just some state constants - STOPPED = "stopped" - RUNNING = "running" - PAUSED = "paused" - - def take_action(action=nil, desired_state=nil) - if Win32::Service.exists?(config[:name]) - if current_state != desired_state - Win32::Service.send(action, config[:name]) - wait_for_state(desired_state) - puts "Service '#{config[:name]}' is now '#{current_state}'." - else - puts "Service '#{config[:name]}' is already '#{desired_state}'." - end - else - puts "Cannot '#{action}' service '#{config[:name]}', service does not exist." - end - end - - def current_state - Win32::Service.status(config[:name]).current_state - end - - # Helper method that waits for a status to change its state since state - # changes aren't usually instantaneous. - def wait_for_state(desired_state) - while current_state != desired_state - puts "One moment... #{current_state}" - sleep 1 - end - end - end - end -end - -Chef::Windows::ServiceManager.new.run +puts "WARNING: service_manager.rb is changed to be a binary: chef_service_manager" +puts "Please use chef_service_manager instead of service_manager.rb." |