module Patriot::Tool::PatriotCommands::Register

register jobs to JobStore

Public Instance Methods

register(date, *paths) click to toggle source
# File lib/patriot/tool/patriot_commands/register.rb, line 37
def register(date, *paths)
  begin
    # set config/options
    opts        = symbolize_options(options)
    conf        = {:type => 'register'}
    conf[:path] = opts[:config] if opts.has_key?(:config)
    config      = load_config(conf)
    opts        = {:update_id      => Time.now.to_i,
                   :store_id       => Patriot::JobStore::ROOT_STORE_ID,
                   :retry_interval => 300,
                   :retry_limite   => 10}.merge(opts)
    if opts[:keep_state]
      opts[:state] = nil
      opts[:update_id] = nil
    end
    job_store = Patriot::JobStore::Factory.create_jobstore(opts[:store_id], config)
    parser  = Patriot::Tool::BatchParser.new(config)
    jobs    = []
    parser.process(date, paths, opts) do |cmd|
      job = cmd.to_job
      job[Patriot::Command::PRIORITY_ATTR] = opts[:priority] if opts.has_key?(:priority)
      job[Patriot::Command::STATE_ATTR] = opts[:state] if opts.has_key?(:state)
      jobs << job
    end
    return if opts[:debug]
    job_store.register(opts[:update_id], jobs)
    if opts[:retry_dep]
      job_store.process_subsequent(jobs.map(&:job_id)) do |job_store, jobs|
        job_store.set_state(opts[:update_id], jobs.map(&:job_id), Patriot::JobStore::JobState::WAIT)
      end
    end
  rescue => e
    puts e
    $@.each{|m| puts m}
    raise e.message
  end
end