Sha256: 30c40ff2a3aa58e8b7ad9304972f3cd96106f56adfa2127c9be38a018b173563

Contents?: true

Size: 1.87 KB

Versions: 4

Compression:

Stored size: 1.87 KB

Contents

# included by class Task
module TaskRunner
  def self.included(klass)
    require 'fileutils'
    klass.extend(ClassMethods)
  end

  def restart
    system(write_event_header('restart'))
    cmd = serf_event('restart')
    logger.debug "run #{cmd}"
    self.exit_code = system(cmd)
    self.save!
  end
 
  def status
    system(write_query_header('status'))
    self.delay.delayed_status
  end

  def delayed_status
    cmd = serf_query('status')
    logger.debug "run #{cmd}"
    self.exit_code = system(cmd)
    self.save!
  end

  def configtest
    system(write_query_header('configtest'))
    self.delay.delayed_configtest
  end

  def delayed_configtest
    cmd = serf_query('configtest')
    logger.debug "run #{cmd}"
    self.exit_code = system(cmd)
    self.save!
  end

  ## delayed_job hooks

  def before(job)
    @job = job
  end

  def failure
    logger.warn "job #{@job.attributes} failed"
  end

  ## helpers

  def write_event_header(cmd)
    "echo '$ serf event td-agent-#{cmd}' > #{self.filename}"
  end

  def write_query_header(cmd)
    "echo '$ serf query td-agent-#{cmd}' > #{self.filename}"
  end

  # serf event works asynchronously, so it does not take time
  def serf_event(cmd)
    "#{self.class.serf_path} event td-agent-#{cmd} >> #{self.filename} 2>&1"
  end

  # serf query works synchronously, so it takes time
  def serf_query(cmd)
    "#{self.class.serf_path} query td-agent-#{cmd} >> #{self.filename} 2>&1"
  end

  module ClassMethods
    def serf_path
      @serf_path ||= "#{find_path_gem('serf-td-agent')}/bin/serf"
    end

    # from gem-path gem
    def find_path_gem name
      path_gem = Gem.path.find do |base|
        path_gem = $LOAD_PATH.find do |path|
          path_gem = path[%r{#{base}/gems/#{name}\-[^/-]+/}]
          break path_gem if path_gem
        end
        break path_gem if path_gem
      end
      path_gem[0...-1] if path_gem
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fluentd-server-0.3.2 lib/fluentd_server/task_runner.rb
fluentd-server-0.3.1 lib/fluentd_server/task_runner.rb
fluentd-server-0.3.0 lib/fluentd_server/task_runner.rb
fluentd-server-0.2.0 lib/fluentd_server/task_runner.rb