diff options
author | Steve Kemp <steve@steve.org.uk> | 2012-11-14 13:34:19 +0000 |
---|---|---|
committer | Steve Kemp <steve@steve.org.uk> | 2012-11-14 13:34:19 +0000 |
commit | 4a04335d45c35e9e8ea63b9ae93666510c0954a9 (patch) | |
tree | 9e306024ba97ea4e8319e092c35e9c80bc3f39b7 /bin/custodian-queue | |
parent | f03fbe8f961b9f6bd43315cfd9233fa105603c31 (diff) |
Removed the flushing-action from custodian-dequeue and added it to the
new helper tool
Diffstat (limited to 'bin/custodian-queue')
-rwxr-xr-x | bin/custodian-queue | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/bin/custodian-queue b/bin/custodian-queue new file mode 100755 index 0000000..7eaa182 --- /dev/null +++ b/bin/custodian-queue @@ -0,0 +1,140 @@ +#!/usr/bin/ruby1.8 +# +# NAME +# custodian-queue - Work with the queue. +# +# SYNOPSIS +# custodian-queu [ -h | --help ] +# [ -m | --manual] +# [ -f | --flush ] +# [ -s | --stats] +# [ -S | --server 1.2.3.4:123 ] +# +# OPTIONS +# +# -h, --help Show a help message, and exit. +# +# -m, --manual Show this manual, and exit. +# +# -f, --flush Flush the queue, removing all jobs. +# +# -s, --stats Show the pending jobs. +# +# -S, --server Specify the host:port for the beanstalkd queue. +# +# +# ABOUT +# +# This tool is designed to inspect the beanstalkd queue. +# +# +# AUTHOR +# +# Steve Kemp <steve@bytemark.co.uk> +# + + + +require 'beanstalk-client' +require 'getoptlong' + + + + +# +# Entry-point to our code. +# +if __FILE__ == $0 then + + $SERVER = "127.0.0.1:11300" + $FLUSH = false + $STATS = false + $help = false + $manual = false + + begin + opts = GetoptLong.new( + [ "--flush", "-f", GetoptLong::NO_ARGUMENT ], + [ "--help", "-h", GetoptLong::NO_ARGUMENT ], + [ "--manual", "-m", GetoptLong::NO_ARGUMENT ], + [ "--server", "-S", GetoptLong::REQUIRED_ARGUMENT ], + [ "--stats", "-s", GetoptLong::NO_ARGUMENT ] + ) + opts.each do |opt, arg| + case opt + when "--stats": + $STATS = true + when "--flush": + $FLUSH = true + when "--server": + $SERVER = arg + when "--help": + $help = true + when "--manual": + $manual = true + end + end + rescue StandardError => ex + puts "Option parsing failed: #{ex.to_s}" + exit + end + + # + # CAUTION! Here be quality kode. + # + if $manual or $help + + # Open the file, stripping the shebang line + lines = File.open(__FILE__){|fh| fh.readlines}[1..-1] + + found_synopsis = false + + lines.each do |line| + + line.chomp! + break if line.empty? + + if $help and !found_synopsis + found_synopsis = (line =~ /^#\s+SYNOPSIS\s*$/) + next + end + + puts line[2..-1].to_s + + break if $help and found_synopsis and line =~ /^#\s*$/ + + end + + exit 0 + end + + # + # Create the object + # + queue = Beanstalk::Pool.new([$SERVER]) + + # + # Showing stats? + # + if ( $STATS ) + stats = queue.stats() + puts "There are #{stats['current-jobs-ready'] || 0} jobs pending." + exit( 0 ) + end + + # + # Are we flushing the queue? + # + if ( $FLUSH ) + while( true ) + begin + job = queue.reserve(1) + job.delete + rescue Beanstalk::TimedOut => ex + exit( 0 ) + end + end + end + + +end |