gitlab-org--gitlab-foss/lib/system_check/app/systemd_unit_files_or_init_...

81 lines
2.1 KiB
Ruby

# frozen_string_literal: true
module SystemCheck
module App
class SystemdUnitFilesOrInitScriptUpToDateCheck < SystemCheck::BaseCheck
SCRIPT_PATH = '/etc/init.d/gitlab'
UNIT_PATHS = [
'/usr/local/lib/systemd/system/gitlab-gitaly.service',
'/usr/local/lib/systemd/system/gitlab-mailroom.service',
'/usr/local/lib/systemd/system/gitlab-puma.service',
'/usr/local/lib/systemd/system/gitlab-sidekiq.service',
'/usr/local/lib/systemd/system/gitlab.slice',
'/usr/local/lib/systemd/system/gitlab.target',
'/usr/local/lib/systemd/system/gitlab-workhorse.service'
].freeze
set_name 'Systemd unit files or init script up-to-date?'
set_skip_reason 'skipped (omnibus-gitlab has neither init script nor systemd units)'
def skip?
return true if omnibus_gitlab?
unless unit_files_exist? || init_file_exists?
self.skip_reason = "can't check because of previous errors"
true
end
end
def check?
if unit_files_exist?
return unit_files_up_to_date?
end
init_file_up_to_date?
end
def show_error
try_fixing_it(
'Install the Service'
)
for_more_information(
see_installation_guide_section('Install the Service')
)
fix_and_rerun
end
private
def init_file_exists?
File.exist?(SCRIPT_PATH)
end
def unit_files_exist?
UNIT_PATHS.all? { |s| File.exist?(s) }
end
def init_file_up_to_date?
recipe_path = Rails.root.join('lib/support/init.d/', 'gitlab')
recipe_content = File.read(recipe_path)
script_content = File.read(SCRIPT_PATH)
recipe_content == script_content
end
def unit_files_up_to_date?
UNIT_PATHS.all? do |unit|
unit_name = File.basename(unit)
recipe_path = Rails.root.join('lib/support/systemd/', unit_name)
recipe_content = File.read(recipe_path)
unit_content = File.read(unit)
recipe_content == unit_content
end
end
end
end
end