Method: Chef::Provider::Service::Upstart#load_current_resource

Defined in:
lib/chef/provider/service/upstart.rb

#load_current_resourceObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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
# File 'lib/chef/provider/service/upstart.rb', line 56

def load_current_resource
  @current_resource = Chef::Resource::Service.new(@new_resource.name)
  @current_resource.service_name(@new_resource.service_name)

  # Get running/stopped state
  # We do not support searching for a service via ps when using upstart since status is a native
  # upstart function. We will however support status_command in case someone wants to do something special.
  if @new_resource.status_command
    Chef::Log.debug("#{@new_resource} you have specified a status command, running..")

    begin
      if run_command_with_systems_locale(:command => @new_resource.status_command) == 0
        @current_resource.running true
      end
    rescue Chef::Exceptions::Exec
      @current_resource.running false
      nil
    end
  else
    begin
      if upstart_state == "running"
        @current_resource.running true
      else
        @current_resource.running false
      end
    rescue Chef::Exceptions::Exec
      @current_resource.running false
      nil
    end
  end

  # Get enabled/disabled state by reading job configuration file
  if ::File.exists?("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
    Chef::Log.debug("#{@new_resource} found #{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
    ::File.open("#{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}",'r') do |file|
      while line = file.gets
        case line
        when /^start on/
          Chef::Log.debug("#{@new_resource} enabled: #{line.chomp}")
          @current_resource.enabled true
          break
        when /^#start on/
          Chef::Log.debug("#{@new_resource} disabled: #{line.chomp}")
          @current_resource.enabled false
          break
        end
      end
    end
  else
    Chef::Log.debug("#{@new_resource} did not find #{@upstart_job_dir}/#{@new_resource.service_name}#{@upstart_conf_suffix}")
    @current_resource.enabled false
  end

  @current_resource
end