Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:darix:apps
gitlab-ce
gitlab-ce-migrate-services
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gitlab-ce-migrate-services of Package gitlab-ce
#!/usr/bin/ruby.ruby3.3 require 'logger' require 'fileutils' class ServiceMigrator def initialize(service_mapping = {}, log_level = Logger::WARN) @logger = Logger.new(STDERR) @logger.level = log_level @trigger_prefix='/run/gitlab-ce-services' @systemctl='/usr/bin/systemctl' @service_mapping = service_mapping @ignore_output = {out: File::NULL, err: File::NULL} if ! File.exist?(@systemctl) @logger.warn("Failed to find #{@systemctl}. This is probably ok. Exciting ...") exit(0) end File.umask(0077) end def check_services old_services = @service_mapping.keys start_services = [] enable_services = [] @service_mapping.each do |old_service, new_service| if system(@systemctl, "is-active", old_service, @ignore_output) @logger.debug("[#{old_service}] Status: running, adding #{new_service}") start_services << new_service else @logger.debug("[#{old_service}] Status: inactive") end if system(@systemctl, "is-enabled", old_service, @ignore_output) @logger.debug("[#{old_service}] Status: enabled, adding #{new_service}") enable_services << new_service else @logger.debug("[#{old_service}] Status: disabled") end end cmdline = [@systemctl,'disable', '--now'].concat(old_services) @logger.debug("Disabling and stopping services: #{old_services.join(', ')}") system(*cmdline, @ignore_output) self.write_trigger_file('start', start_services) self.write_trigger_file('enable', enable_services) end # def restore_services # actions = %w{enable start} # actions.each do |action| # self.systemd_action(action) # end # end private # def systemd_action(action) # trigger = "#{@trigger_prefix}-#{action}" # if File.exist?(trigger) # service_list = File.read(trigger).split(/\s+/) # if service_list.empty? # @logger.error("Found no services for action #{action}") # else # if system(@systemctl, action, *service_list, @ignore_output) # @logger.debug("#{action} for #{service_list} was successful") # else # @logger.warn("#{action} for #{service_list} failed") # end # if FileUtils.rm(trigger) # @logger.debug("Removed #{trigger}") # else # @logger.warn("Failed to remove #{trigger}") # end # end # end # end def write_trigger_file(action, services) if services.empty? @logger.debug("No services for action #{action} found to migrate") else trigger = "#{@trigger_prefix}-#{action}" content = services.join(' ') @logger.debug("Memorizing #{services} for #{action}") if File.write(trigger, content) @logger.debug("Successfully wrote #{trigger}") else @logger.warn("Failed to write #{trigger}") end end end end service_mapping = { 'gitlab-ce-unicorn.service' => 'gitlab-ce-puma.service', } migrator = ServiceMigrator.new(service_mapping) migrator.check_services
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor