diff options
| author | Gordon Sim <gsim@apache.org> | 2008-04-11 10:02:49 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2008-04-11 10:02:49 +0000 |
| commit | 32863060c89c7101f5db7d962ee3f689fd38323a (patch) | |
| tree | 44760ad0d155634e94c8de7d79277534ab9463fa /qpid/python | |
| parent | 407e277c2dffa27f832dc8f9ce7fc184c9508715 (diff) | |
| download | qpid-python-32863060c89c7101f5db7d962ee3f689fd38323a.tar.gz | |
QPID-913: committed patch from tross@redhat.com
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@647099 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python')
| -rw-r--r-- | qpid/python/commands/qpid-route | 4 | ||||
| -rw-r--r--[-rwxr-xr-x] | qpid/python/commands/qpid-tool (renamed from qpid/python/mgmt-cli/main.py) | 39 | ||||
| -rw-r--r-- | qpid/python/qpid/disp.py (renamed from qpid/python/mgmt-cli/disp.py) | 0 | ||||
| -rw-r--r-- | qpid/python/qpid/managementdata.py (renamed from qpid/python/mgmt-cli/managementdata.py) | 58 |
4 files changed, 61 insertions, 40 deletions
diff --git a/qpid/python/commands/qpid-route b/qpid/python/commands/qpid-route index c69ca6204f..0db28c791b 100644 --- a/qpid/python/commands/qpid-route +++ b/qpid/python/commands/qpid-route @@ -160,6 +160,9 @@ class RouteManager: print "Error closing bridge: %d - %s" % (res.status, res.statusText) sys.exit (1) if len (bridges) == 1: + link = self.getLink () + if link == None: + sys.exit (0) if _verbose: print "Last bridge on link, closing link..." res = mc.syncCallMethod (self.mch, link.id, link.classKey, "close") @@ -208,6 +211,7 @@ class RouteManager: elif _verbose: print "Ok" + links = mc.syncGetObjects (self.mch, "link") for link in links: if _verbose: print "Deleting Link: %s... " % link.address, diff --git a/qpid/python/mgmt-cli/main.py b/qpid/python/commands/qpid-tool index f4c22012eb..0983e1b8af 100755..100644 --- a/qpid/python/mgmt-cli/main.py +++ b/qpid/python/commands/qpid-tool @@ -23,11 +23,11 @@ import os import getopt import sys import socket -from cmd import Cmd -from managementdata import ManagementData -from shlex import split -from disp import Display -from qpid.peer import Closed +from cmd import Cmd +from qpid.managementdata import ManagementData +from shlex import split +from qpid.disp import Display +from qpid.peer import Closed class Mcli (Cmd): """ Management Command Interpreter """ @@ -124,10 +124,10 @@ class Mcli (Cmd): self.dataObject.close () def Usage (): - print "Usage:", sys.argv[0], "[OPTIONS] [<target-host> [<tcp-port>]]" + print "Usage:", sys.argv[0], "[OPTIONS] [<target-host[:<tcp-port>]]" print print "Options:" - print " -s <amqp-spec-file> default: /usr/share/amqp/amqp.0-10-preview.xml" + print " -s [ --spec-file ] PATH (/usr/share/amqp/amqp.0-10-preview.xml)" print sys.exit (1) @@ -137,32 +137,29 @@ def Usage (): # Get host name and port if specified on the command line try: - (optlist, cargs) = getopt.getopt (sys.argv[1:], 's:') + longOpts = ("spec-file=") + (optlist, cargs) = getopt.gnu_getopt (sys.argv[1:], 's:', longOpts) except: Usage () - exit (1) + sys.exit (1) -specpath = "/usr/share/amqp/amqp.0-10-preview.xml" -host = "localhost" -port = 5672 +_specpath = "/usr/share/amqp/amqp.0-10-preview.xml" +_host = "localhost" for opt in optlist: - if opt[0] == "-s": - specpath = opt[1] + if opt[0] == "-s" or opt[0] == "--spec-file": + _specpath = opt[1] if len (cargs) > 0: - host = cargs[0] - -if len (cargs) > 1: - port = int (cargs[1]) + _host = cargs[0] disp = Display () # Attempt to make a connection to the target broker try: - data = ManagementData (disp, host, port, specfile=specpath) + data = ManagementData (disp, _host, specfile=_specpath) except socket.error, e: - print "Socket Error:", e[1] + print "Socket Error (%s):" % _host, e[1] sys.exit (1) except Closed, e: if str(e).find ("Exchange not found") != -1: @@ -179,4 +176,4 @@ try: cli.cmdloop () except Closed, e: print "Connection to Broker Lost:", e - exit (1) + sys.exit (1) diff --git a/qpid/python/mgmt-cli/disp.py b/qpid/python/qpid/disp.py index 5746a26e51..5746a26e51 100644 --- a/qpid/python/mgmt-cli/disp.py +++ b/qpid/python/qpid/disp.py diff --git a/qpid/python/mgmt-cli/managementdata.py b/qpid/python/qpid/managementdata.py index 00fc0ec09e..ff43352247 100644 --- a/qpid/python/mgmt-cli/managementdata.py +++ b/qpid/python/qpid/managementdata.py @@ -20,11 +20,26 @@ # import qpid +import socket from qpid.management import managementChannel, managementClient from threading import Lock from disp import Display from shlex import split -from qpid.client import Client +from qpid.client import Client + +class Broker: + def __init__ (self, text): + colon = text.find (":") + if colon == -1: + host = text + self.port = 5672 + else: + host = text[:colon] + self.port = int (text[colon+1:]) + self.host = socket.gethostbyname (host) + + def name (self): + return self.host + ":" + str (self.port) class ManagementData: @@ -137,7 +152,7 @@ class ManagementData: if className not in self.schema: self.schema[className] = (configs, insts, methods, events) - def __init__ (self, disp, host, port=5672, username="guest", password="guest", + def __init__ (self, disp, host, username="guest", password="guest", specfile="../../specs/amqp.0-10-preview.xml"): self.spec = qpid.spec.load (specfile) self.lock = Lock () @@ -149,7 +164,8 @@ class ManagementData: self.methodSeq = 1 self.methodsPending = {} - self.client = Client (host, port, self.spec) + self.broker = Broker (host) + self.client = Client (self.broker.host, self.broker.port, self.spec) self.client.start ({"LOGIN": username, "PASSWORD": password}) self.channel = self.client.channel (1) @@ -349,8 +365,11 @@ class ManagementData: else: active = active + 1 rows.append ((self.displayClassName (name), active, deleted)) - self.disp.table ("Management Object Types:", - ("ObjectType", "Active", "Deleted"), rows) + if len (rows) != 0: + self.disp.table ("Management Object Types:", + ("ObjectType", "Active", "Deleted"), rows) + else: + print "Waiting for next periodic update" finally: self.lock.release () @@ -363,20 +382,21 @@ class ManagementData: print ("Object type %s not known" % className) else: rows = [] - sorted = self.tables[classKey].keys () - sorted.sort () - for objId in sorted: - (ts, config, inst) = self.tables[classKey][objId] - createTime = self.disp.timestamp (ts[1]) - destroyTime = "-" - if ts[2] > 0: - destroyTime = self.disp.timestamp (ts[2]) - objIndex = self.getObjIndex (classKey, config) - row = (self.refName (objId), createTime, destroyTime, objIndex) - rows.append (row) - self.disp.table ("Objects of type %s.%s" % (classKey[0], classKey[1]), - ("ID", "Created", "Destroyed", "Index"), - rows) + if classKey in self.tables: + sorted = self.tables[classKey].keys () + sorted.sort () + for objId in sorted: + (ts, config, inst) = self.tables[classKey][objId] + createTime = self.disp.timestamp (ts[1]) + destroyTime = "-" + if ts[2] > 0: + destroyTime = self.disp.timestamp (ts[2]) + objIndex = self.getObjIndex (classKey, config) + row = (self.refName (objId), createTime, destroyTime, objIndex) + rows.append (row) + self.disp.table ("Objects of type %s.%s" % (classKey[0], classKey[1]), + ("ID", "Created", "Destroyed", "Index"), + rows) finally: self.lock.release () |
