summaryrefslogtreecommitdiff
path: root/qpid/python
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-04-11 10:02:49 +0000
committerGordon Sim <gsim@apache.org>2008-04-11 10:02:49 +0000
commit32863060c89c7101f5db7d962ee3f689fd38323a (patch)
tree44760ad0d155634e94c8de7d79277534ab9463fa /qpid/python
parent407e277c2dffa27f832dc8f9ce7fc184c9508715 (diff)
downloadqpid-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-route4
-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 ()