summaryrefslogtreecommitdiff
path: root/tools/src/py/qpid-route
diff options
context:
space:
mode:
Diffstat (limited to 'tools/src/py/qpid-route')
-rwxr-xr-xtools/src/py/qpid-route214
1 files changed, 116 insertions, 98 deletions
diff --git a/tools/src/py/qpid-route b/tools/src/py/qpid-route
index 0b5069a277..d60574667d 100755
--- a/tools/src/py/qpid-route
+++ b/tools/src/py/qpid-route
@@ -19,47 +19,13 @@
# under the License.
#
-import getopt
+from optparse import OptionParser, OptionGroup, IndentedHelpFormatter
import sys
import socket
import os
import locale
from qmf.console import Session, BrokerURL
-def Usage(short=False):
- print "Usage: qpid-route [OPTIONS] dynamic add <dest-broker> <src-broker> <exchange> [tag] [exclude-list]"
- print " qpid-route [OPTIONS] dynamic del <dest-broker> <src-broker> <exchange>"
- print
- print " qpid-route [OPTIONS] route add <dest-broker> <src-broker> <exchange> <routing-key> [tag] [exclude-list] [mechanism]"
- print " qpid-route [OPTIONS] route del <dest-broker> <src-broker> <exchange> <routing-key>"
- print " qpid-route [OPTIONS] queue add <dest-broker> <src-broker> <exchange> <queue>"
- print " qpid-route [OPTIONS] queue del <dest-broker> <src-broker> <exchange> <queue>"
- print " qpid-route [OPTIONS] route list [<dest-broker>]"
- print " qpid-route [OPTIONS] route flush [<dest-broker>]"
- print " qpid-route [OPTIONS] route map [<broker>]"
- print
- print " qpid-route [OPTIONS] link add <dest-broker> <src-broker>"
- print " qpid-route [OPTIONS] link del <dest-broker> <src-broker>"
- print " qpid-route [OPTIONS] link list [<dest-broker>]"
- print
- if short:
- return
- print "Options:"
- print " --timeout seconds (10) Maximum time to wait for broker connection"
- print " -v [ --verbose ] Verbose output"
- print " -q [ --quiet ] Quiet output, don't print duplicate warnings"
- print " -d [ --durable ] Added configuration shall be durable"
- print " -e [ --del-empty-link ] Delete link after deleting last route on the link"
- print " -s [ --src-local ] Make connection to source broker (push route)"
- print " --ack N Acknowledge transfers over the bridge in batches of N"
- print " -t <transport> [ --transport <transport>]"
- print " Specify transport to use for links, defaults to tcp"
- print
- print " dest-broker and src-broker are in the form: [username/password@] hostname | ip-address [:<port>]"
- print " ex: localhost, 10.1.1.7:10000, broker-host:10000, guest/guest@localhost"
- print
- sys.exit(1)
-
_verbose = False
_quiet = False
_durable = False
@@ -412,61 +378,113 @@ def YN(val):
## Main Program
##
-try:
- longOpts = ("help", "verbose", "quiet", "durable", "del-empty-link", "src-local", "transport=", "ack=", "timeout=")
- (optlist, encArgs) = getopt.gnu_getopt(sys.argv[1:], "hvqdest:", longOpts)
-except Exception, e:
- Usage(short=True)
- # make output match optparse-based tools' output, for consistent scripting
- msg = str(e).replace('option', 'no such option:').replace('not recognized', '')
- print "qpid-config: error:", msg
- sys.exit (1)
+
+class JHelpFormatter(IndentedHelpFormatter):
+ """Format usage and description without stripping newlines from usage strings
+ """
+
+ def format_usage(self, usage):
+ return usage
+
+
+ def format_description(self, description):
+ if description:
+ return description + "\n"
+ else:
+ return ""
+
+def usage(parser):
+ parser.print_help()
+ exit(-1)
+
+usage = """
+Usage: qpid-route [OPTIONS] dynamic add <dest-broker> <src-broker> <exchange> [tag] [exclude-list]
+ qpid-route [OPTIONS] dynamic del <dest-broker> <src-broker> <exchange>
+
+ qpid-route [OPTIONS] route add <dest-broker> <src-broker> <exchange> <routing-key> [tag] [exclude-list] [mechanism]
+ qpid-route [OPTIONS] route del <dest-broker> <src-broker> <exchange> <routing-key>
+ qpid-route [OPTIONS] queue add <dest-broker> <src-broker> <exchange> <queue>
+ qpid-route [OPTIONS] queue del <dest-broker> <src-broker> <exchange> <queue>
+ qpid-route [OPTIONS] route list [<dest-broker>]
+ qpid-route [OPTIONS] route flush [<dest-broker>]
+ qpid-route [OPTIONS] route map [<broker>]
+
+ qpid-route [OPTIONS] link add <dest-broker> <src-broker>
+ qpid-route [OPTIONS] link del <dest-broker> <src-broker>
+ qpid-route [OPTIONS] link list [<dest-broker>]"""
+
+description = """
+ADDRESS syntax:
+
+ [username/password@] hostname
+ ip-address [:<port>]"""
+
+parser = OptionParser(usage=usage,
+ description=description,
+ formatter=JHelpFormatter())
+
+parser.add_option("--timeout", action="store", type="int", default="10", metavar="SECS", help="Maximum time to wait for broker connection (in seconds)")
+parser.add_option("-v", "--verbose", action="store_true", help="Verbose output")
+parser.add_option("-q", "--quiet", action="store_true", help="Quiet output, don't print duplicate warnings")
+parser.add_option("-d", "--durable", action="store_true", help="Added configuration shall be durable")
+
+parser.add_option("-e", "--del-empty-link", action="store_true", help="Delete link after deleting last route on the link")
+parser.add_option("-s", "--src-local", action="store_true", help="Make connection to source broker (push route)")
+
+parser.add_option("--ack", action="store", type="int", metavar="N", help="Acknowledge transfers over the bridge in batches of N")
+parser.add_option("-t", "--transport", action="store", type="string", default="tcp", metavar="<transport>", help="Transport to use for links, defaults to tcp")
+
+opts, encArgs = parser.parse_args()
try:
encoding = locale.getpreferredencoding()
- cargs = [a.decode(encoding) for a in encArgs]
+ args = [a.decode(encoding) for a in encArgs]
except:
- cargs = encArgs
-
-for opt in optlist:
- if opt[0] == "-h" or opt[0] == "--help":
- Usage()
- sys.exit(1)
- if opt[0] == "--timeout":
- _connTimeout = int(opt[1])
- if _connTimeout == 0:
- _connTimeout = None
- if opt[0] == "-v" or opt[0] == "--verbose":
- _verbose = True
- if opt[0] == "-q" or opt[0] == "--quiet":
- _quiet = True
- if opt[0] == "-d" or opt[0] == "--durable":
- _durable = True
- if opt[0] == "-e" or opt[0] == "--del-empty-link":
- _dellink = True
- if opt[0] == "-s" or opt[0] == "--src-local":
- _srclocal = True
- if opt[0] == "-t" or opt[0] == "--transport":
- _transport = opt[1]
- if opt[0] == "--ack":
- _ack = int(opt[1])
-
-nargs = len(cargs)
+ args = encArgs
+
+if opts.timeout:
+ _connTimeout = opts.timeout
+ if _connTimeout == 0:
+ _connTimeout = None
+
+if opts.verbose:
+ _verbose = True
+
+if opts.quiet:
+ _quiet = True
+
+if opts.durable:
+ _durable = True
+
+if opts.del_empty_link:
+ _dellink = True
+
+if opts.src_local:
+ _srclocal = true
+
+if opts.transport:
+ _transport = opts.transport
+
+if opts.ack:
+ _ack = opts.ack
+
+nargs = len(args)
if nargs < 2:
- Usage()
+ usage(parser)
+
if nargs == 2:
localBroker = socket.gethostname()
else:
if _srclocal:
- localBroker = cargs[3]
- remoteBroker = cargs[2]
+ localBroker = args[3]
+ remoteBroker = args[2]
else:
- localBroker = cargs[2]
+ localBroker = args[2]
if nargs > 3:
- remoteBroker = cargs[3]
+ remoteBroker = args[3]
-group = cargs[0]
-cmd = cargs[1]
+group = args[0]
+cmd = args[1]
rm = None
try:
@@ -474,11 +492,11 @@ try:
if group == "link":
if cmd == "add":
if nargs != 4:
- Usage()
+ usage(parser)
rm.addLink(remoteBroker)
elif cmd == "del":
if nargs != 4:
- Usage()
+ usage(parser)
rm.delLink(remoteBroker)
elif cmd == "list":
rm.listLinks()
@@ -486,36 +504,36 @@ try:
elif group == "dynamic":
if cmd == "add":
if nargs < 5 or nargs > 7:
- Usage()
+ usage(parser)
tag = ""
excludes = ""
mech = "PLAIN"
- if nargs > 5: tag = cargs[5]
- if nargs > 6: excludes = cargs[6]
- rm.addRoute(remoteBroker, cargs[4], "", tag, excludes, mech, dynamic=True)
+ if nargs > 5: tag = args[5]
+ if nargs > 6: excludes = args[6]
+ rm.addRoute(remoteBroker, args[4], "", tag, excludes, mech, dynamic=True)
elif cmd == "del":
if nargs != 5:
- Usage()
+ usage(parser)
else:
- rm.delRoute(remoteBroker, cargs[4], "", dynamic=True)
+ rm.delRoute(remoteBroker, args[4], "", dynamic=True)
elif group == "route":
if cmd == "add":
if nargs < 6 or nargs > 9:
- Usage()
+ usage(parser)
tag = ""
excludes = ""
mech = "PLAIN"
- if nargs > 6: tag = cargs[6]
- if nargs > 7: excludes = cargs[7]
- if nargs > 8: mech = cargs[8]
- rm.addRoute(remoteBroker, cargs[4], cargs[5], tag, excludes, mech, dynamic=False)
+ if nargs > 6: tag = args[6]
+ if nargs > 7: excludes = args[7]
+ if nargs > 8: mech = args[8]
+ rm.addRoute(remoteBroker, args[4], args[5], tag, excludes, mech, dynamic=False)
elif cmd == "del":
if nargs != 6:
- Usage()
- rm.delRoute(remoteBroker, cargs[4], cargs[5], dynamic=False)
+ usage(parser)
+ rm.delRoute(remoteBroker, args[4], args[5], dynamic=False)
elif cmd == "map":
rm.mapRoutes()
else:
@@ -524,17 +542,17 @@ try:
elif cmd == "flush":
rm.clearAllRoutes()
else:
- Usage()
+ usage(parser)
elif group == "queue":
if nargs != 6:
- Usage()
+ usage(parser)
if cmd == "add":
- rm.addQueueRoute(remoteBroker, exchange=cargs[4], queue=cargs[5])
+ rm.addQueueRoute(remoteBroker, exchange=args[4], queue=args[5])
elif cmd == "del":
- rm.delQueueRoute(remoteBroker, exchange=cargs[4], queue=cargs[5])
+ rm.delQueueRoute(remoteBroker, exchange=args[4], queue=args[5])
else:
- Usage()
+ usage(parser)
except Exception,e:
if rm: