Class: Chef::Application::WindowsService

Inherits:
Win32::Daemon
  • Object
show all
Includes:
Mixlib::CLI
Defined in:
lib/chef/application/windows_service.rb

Instance Method Summary collapse

Instance Method Details

#service_initObject

[View source]

70
71
72
73
# File 'lib/chef/application/windows_service.rb', line 70

def service_init
  reconfigure
  Chef::Log.info("Chef Client Service initialized")
end

#service_main(*startup_parameters) ⇒ Object

[View source]

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/chef/application/windows_service.rb', line 75

def service_main(*startup_parameters)

  while running?
    if state == RUNNING
      begin
        # Reconfigure each time through to pick up any changes in the client file
        Chef::Log.info("Reconfiguring with startup parameters")
        reconfigure(startup_parameters)

        splay = rand Chef::Config[:splay]
        Chef::Log.debug("Splay sleep #{splay} seconds")
        sleep splay

        # If we've stopped, then bail out now, instead of going on to run Chef
        next if state != RUNNING

        run_chef_client

        Chef::Log.debug("Sleeping for #{Chef::Config[:interval]} seconds")
        client_sleep Chef::Config[:interval]
      rescue Chef::Application::Wakeup => e
        Chef::Log.debug("Received Wakeup signal.  Starting run.")
        next
      rescue SystemExit => e
        raise
      rescue Exception => e
        Chef::Log.error("#{e.class}: #{e}")
        Chef::Application.debug_stacktrace(e)
        Chef::Log.error("Sleeping for #{Chef::Config[:interval]} seconds before trying again")
        client_sleep Chef::Config[:interval]
        retry
      end
    else # PAUSED or IDLE
      sleep 5
    end
  end
end

#service_pauseObject

[View source]

121
122
123
# File 'lib/chef/application/windows_service.rb', line 121

def service_pause
  Chef::Log.info("SERVICE_CONTROL_PAUSE received, pausing")
end

#service_resumeObject

[View source]

125
126
127
# File 'lib/chef/application/windows_service.rb', line 125

def service_resume
  Chef::Log.info("SERVICE_CONTROL_CONTINUE received, resuming")
end

#service_shutdownObject

[View source]

129
130
131
# File 'lib/chef/application/windows_service.rb', line 129

def service_shutdown
  Chef::Log.info("SERVICE_CONTROL_SHUTDOWN received, shutting down")
end

#service_stopObject

Control Signal Callback Methods

[View source]

117
118
119
# File 'lib/chef/application/windows_service.rb', line 117

def service_stop
  Chef::Log.info("SERVICE_CONTROL_STOP received, stopping")
end