class Chef::Provider::Service

Public Class Methods

new(new_resource, run_context) click to toggle source
Calls superclass method Chef::Provider::new
# File lib/chef/provider/service.rb, line 33
def initialize(new_resource, run_context)
  super
  @enabled = nil
end

Public Instance Methods

define_resource_requirements() click to toggle source
# File lib/chef/provider/service.rb, line 73
def define_resource_requirements
  requirements.assert(:reload) do |a|
    a.assertion { supports[:reload] || new_resource.reload_command }
    a.failure_message Chef::Exceptions::UnsupportedAction, "#{self} does not support :reload"
    # if a service is not declared to support reload, that won't
    # typically change during the course of a run - so no whyrun
    # alternative here.
  end
end
disable_service() click to toggle source
# File lib/chef/provider/service.rb, line 184
def disable_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :disable"
end
enable_service() click to toggle source
# File lib/chef/provider/service.rb, line 180
def enable_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :enable"
end
load_current_resource() click to toggle source
# File lib/chef/provider/service.rb, line 38
def load_current_resource
  supports[:status] = false if supports[:status].nil?
  supports[:reload] = false if supports[:reload].nil?
  supports[:restart] = false if supports[:restart].nil?
end
load_new_resource_state() click to toggle source

the new_resource#enabled and running variables are not user input, but when we do (e.g.) action_enable we want to set new_resource.enabled so that the comparison between desired and current state produces the correct change in reporting. XXX?: the nil? check below will likely fail if this is a cloned resource or if we just run multiple actions.

# File lib/chef/provider/service.rb, line 49
def load_new_resource_state
  if new_resource.enabled.nil?
    new_resource.enabled(current_resource.enabled)
  end
  if new_resource.running.nil?
    new_resource.running(current_resource.running)
  end
  if new_resource.masked.nil?
    new_resource.masked(current_resource.masked)
  end
end
mask_service() click to toggle source
# File lib/chef/provider/service.rb, line 188
def mask_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :mask"
end
reload_service() click to toggle source
# File lib/chef/provider/service.rb, line 208
def reload_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :reload"
end
restart_service() click to toggle source
# File lib/chef/provider/service.rb, line 204
def restart_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :restart"
end
shared_resource_requirements() click to toggle source
# File lib/chef/provider/service.rb, line 69
def shared_resource_requirements
  user_services_requirements
end
start_service() click to toggle source
# File lib/chef/provider/service.rb, line 196
def start_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :start"
end
stop_service() click to toggle source
# File lib/chef/provider/service.rb, line 200
def stop_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :stop"
end
supports() click to toggle source
# File lib/chef/provider/service.rb, line 29
def supports
  @supports ||= new_resource.supports.dup
end
unmask_service() click to toggle source
# File lib/chef/provider/service.rb, line 192
def unmask_service
  raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :unmask"
end
user_services_requirements() click to toggle source

subclasses should override this if they do implement user services

# File lib/chef/provider/service.rb, line 62
def user_services_requirements
  requirements.assert(:all_actions) do |a|
    a.assertion { new_resource.user.nil? }
    a.failure_message Chef::Exceptions::UnsupportedAction, "#{self} does not support user services"
  end
end

Protected Instance Methods

custom_command_for_action?(action) click to toggle source
# File lib/chef/provider/service.rb, line 222
def custom_command_for_action?(action)
  method_name = "#{action}_command".to_sym
  new_resource.respond_to?(method_name) &&
    !!new_resource.send(method_name)
end
default_init_command() click to toggle source
# File lib/chef/provider/service.rb, line 214
def default_init_command
  if new_resource.init_command
    new_resource.init_command
  elsif instance_variable_defined?(:@init_command)
    @init_command
  end
end