#!/usr/bin/ruby -rubygems # # Usage information at the end of the script. # require 'getoptlong' require 'custodian/parser' require 'custodian/queue' require 'custodian/settings' # # Entry-point to our code. # if __FILE__ == $PROGRAM_NAME help = false manual = false begin opts = GetoptLong.new( ['--dump', '-d', GetoptLong::NO_ARGUMENT], ['--test', GetoptLong::NO_ARGUMENT], ['--file', '-f', GetoptLong::REQUIRED_ARGUMENT], ['--help', '-h', GetoptLong::NO_ARGUMENT], ['--manual', '-m', GetoptLong::NO_ARGUMENT] ) opts.each do |opt, arg| case opt when '--dump' then ENV['DUMP'] = '1' when '--test' then ENV['TEST'] = '1' when '--file' then ENV['FILE'] = arg when '--help' then help = true when '--manual' then manual = true end end rescue StandardError => ex puts "Option parsing failed: #{ex}" exit end # # Show the help information. # if manual || help DATA.read.split("\n").each do |line| puts Regexp.last_match(1).dup if line =~ /^# ?(.*)/ end exit 0 end # # Connected to the queue - be it redis or beanstalkd # settings = Custodian::Settings.instance queue = Custodian::QueueType.create(settings.queue_type) unless queue puts "Failed to connect to the #{settings.queue_type} queue" exit 1 end # # Create the parser object. # mon = Custodian::Parser.new # # Parse our configuration file. If there are errors then we'll # exit this script. # begin mon.parse_file(ENV['FILE']) rescue => e puts "Failure in parsing the configuration file : #{ENV['FILE']}" puts e.to_s exit(1) end mon.jobs.each do |test| if ENV['TEST'] # nop elsif ENV['DUMP'] puts test else queue.add(test.to_s) end end end __END__ # # NAME # custodian-enqueue - Parse tests from a file and enqueue them. # # SYNOPSIS # custodian-enqueue [ -h | --help ] # [ -m | --manual] # [ -q | --queue NAME] # [ -f | --file FILE] # [ -d | --dump ] # [ | --test ] # # OPTIONS # # -h, --help Show a help message, and exit. # # -m, --manual Show this manual, and exit. # # -d, --dump Dump the parsed tests to the console. # (They are not inserted to the queue.) # # --test Test the parsing of the given file, alert on errors. # # -f, --file FILE Parse the given configuration file. # # # # ABOUT # # This tool reads a single configuration file and parses it into a # series of network & protocol tests. These tests are then stored in # a queue from which workers can retrieve and execute them. # # The dequeing process may occur up numerous other hosts. # # CONFIGURATION FILE # # The configuration file is 99% compatible with that used in the tool # custodian replaces. # # # AUTHOR # # Steve Kemp #