class ForemanMaintain::Utils::Service::Systemd

Attributes

instance_parent_unit[R]

Public Class Methods

new(name, priority, options = {}) click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 6
def initialize(name, priority, options = {})
  super
  @sys = SystemHelpers.new
  @instance_parent_unit = options.fetch(:instance_parent_unit, nil)
end

Public Instance Methods

command(action) click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 12
def command(action)
  all = @options.fetch(:all, false)
  skip_enablement = @options.fetch(:skip_enablement, false)
  if skip_enablement && %w[enable disable].include?(action)
    return skip_enablement_message(action, @name)
  end

  cmd = "systemctl #{action} #{@name}"
  cmd += ' --all' if all
  cmd
end
disable() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 44
def disable
  execute('disable')
end
enable() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 40
def enable
  execute('enable')
end
enabled?() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 56
def enabled?
  if @sys.systemd_installed?
    service_enabled_status == 'enabled'
  end
end
exist?() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 52
def exist?
  ['enabled', 'disabled'].include?(service_enabled_status)
end
matches?(service) click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 62
def matches?(service)
  if service.is_a? String
    service == @name || File.fnmatch(service, @name)
  else
    super
  end
end
restart() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 36
def restart
  execute('restart')
end
running?() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 48
def running?
  status.first == 0
end
start() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 28
def start
  execute('start')
end
status() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 24
def status
  execute('status')
end
stop() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 32
def stop
  execute('stop')
end

Private Instance Methods

execute(action) click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 72
def execute(action)
  @sys.execute_with_status(command(action))
end
service_enabled_status() click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 76
def service_enabled_status
  @sys.execute("systemctl is-enabled #{@name} 2>&1 | tail -1").strip
end
skip_enablement_message(action, name) click to toggle source
# File lib/foreman_maintain/utils/service/systemd.rb, line 80
      def skip_enablement_message(action, name)
        # Enable and disable does not work well with globs since they treat them literally.
        # We are skipping the pulpcore-workers@* for these actions until they are configured in
        # a more managable way with systemd
        msg =
          "
\nWARNING: Skipping #{action} for #{name} as there are a variable amount of services to manage
and this command will not respond to glob operators. These services have been configured by
the installer and it is recommended to keep them enabled to prevent misconfiguration.\n
"
        puts msg
      end