module RCM class ServiceManager SYS_SERVICE_MGR = '/usr/sbin/service'.freeze def initialize(logger) @logger = logger end def dependencies_changed?(service) service.depends_file.values.each do |f| if f.changed @logger.debug("Dependencies for service '#{service.name}' changed because #{f.path} changed.") return true end end service.depends_package.values.each do |p| if p.changed @logger.debug("Dependencies for service '#{service.name}' changed because #{p.name} changed.") return true end end @logger.info("Dependencies for service '#{service.name}' have not changed.") false end def restart(service) @logger.debug("Restarting #{service.name}") status = ::RCM.cmd("#{SYS_SERVICE_MGR} #{service.name} restart") error_msg = "Failed to restart #{service.name}.\n\nstderr:\n#{status.error}\n\nstdout:\n#{status.output}" @logger.fatal(error_msg) end end end