class PoiseService::ServiceProviders::Systemd

Public Class Methods

default_inversion_options(node, resource) click to toggle source

@api private

Calls superclass method
# File lib/poise_service/service_providers/systemd.rb, line 34
def self.default_inversion_options(node, resource)
  super.merge({
    # Automatically reload systemd on changes.
    auto_reload: true,
    # Service restart mode.
    restart_mode: 'on-failure',
  })
end
provides_auto?(node, resource) click to toggle source

@api private

# File lib/poise_service/service_providers/systemd.rb, line 29
def self.provides_auto?(node, resource)
  service_resource_hints.include?(:systemd)
end

Public Instance Methods

pid() click to toggle source
# File lib/poise_service/service_providers/systemd.rb, line 43
def pid
  cmd = shell_out(%w{systemctl status} + [new_resource.service_name])
  if !cmd.error? && cmd.stdout.include?('Active: active (running)') && md = cmd.stdout.match(/Main PID: (\d+)/)
    md[1].to_i
  else
    nil
  end
end

Private Instance Methods

create_service() click to toggle source
# File lib/poise_service/service_providers/systemd.rb, line 67
def create_service
  reloader = systemctl_daemon_reload
  service_template("/etc/systemd/system/#{new_resource.service_name}.service", 'systemd.service.erb') do
    notifies :run, reloader, :immediately if options['auto_reload']
    variables.update(auto_reload: options['auto_reload'], restart_mode: options['restart_mode'])
  end
end
destroy_service() click to toggle source
# File lib/poise_service/service_providers/systemd.rb, line 75
def destroy_service
  reloader = systemctl_daemon_reload
  file "/etc/systemd/system/#{new_resource.service_name}.service" do
    action :delete
    notifies :run, reloader, :immediately if options['auto_reload']
  end
end
service_resource() click to toggle source
# File lib/poise_service/service_providers/systemd.rb, line 54
def service_resource
  super.tap do |r|
    r.provider(Chef::Provider::Service::Systemd)
  end
end
systemctl_daemon_reload() click to toggle source
# File lib/poise_service/service_providers/systemd.rb, line 60
def systemctl_daemon_reload
  execute 'systemctl daemon-reload' do
    action :nothing
    user 'root'
  end
end