A bit more abstraction.
This commit is contained in:
parent
b6bf09471a
commit
c2fc45b13e
|
|
@ -81,6 +81,16 @@ PURGABLE = {
|
||||||
'uri': '/queues/{vhost}/{name}/contents'}
|
'uri': '/queues/{vhost}/{name}/contents'}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EXTRA_VERBS = {
|
||||||
|
'publish': {'mandatory': ['routing_key', 'payload'],
|
||||||
|
'optional': {'exchange': 'amq.default',
|
||||||
|
'payload_encoding': 'string'},
|
||||||
|
'uri': '/exchanges/{vhost}/{exchange}/publish'},
|
||||||
|
'get': {'mandatory': ['queue'],
|
||||||
|
'optional': {'count': '1', 'requeue': 'true'},
|
||||||
|
'uri': '/queues/{vhost}/{queue}/get'}
|
||||||
|
}
|
||||||
|
|
||||||
for k in DECLARABLE:
|
for k in DECLARABLE:
|
||||||
DECLARABLE[k]['uri'] = URIS[k]
|
DECLARABLE[k]['uri'] = URIS[k]
|
||||||
|
|
||||||
|
|
@ -98,16 +108,14 @@ where cmd is one of:
|
||||||
usage += " list {0} [<column>...]\n".format(l)
|
usage += " list {0} [<column>...]\n".format(l)
|
||||||
for s in SHOWABLE:
|
for s in SHOWABLE:
|
||||||
usage += " show {0} [<column>...]\n".format(s)
|
usage += " show {0} [<column>...]\n".format(s)
|
||||||
usage += fmt_usage_stanza(DECLARABLE, 'declare')
|
usage += fmt_usage_stanza(DECLARABLE, 'declare')
|
||||||
usage += fmt_usage_stanza(DELETABLE, 'delete')
|
usage += fmt_usage_stanza(DELETABLE, 'delete')
|
||||||
usage += fmt_usage_stanza(CLOSABLE, 'close')
|
usage += fmt_usage_stanza(CLOSABLE, 'close')
|
||||||
usage += fmt_usage_stanza(PURGABLE, 'purge')
|
usage += fmt_usage_stanza(PURGABLE, 'purge')
|
||||||
|
usage += fmt_usage_stanza(EXTRA_VERBS, '')
|
||||||
usage += """
|
usage += """
|
||||||
export <file>
|
export <file>
|
||||||
import <file>
|
import <file>"""
|
||||||
|
|
||||||
publish exchange=... routing_key=... payload=... payload_encoding=...
|
|
||||||
get queue=... count=... requeue=..."""
|
|
||||||
return usage
|
return usage
|
||||||
|
|
||||||
def fmt_usage_stanza(root, verb):
|
def fmt_usage_stanza(root, verb):
|
||||||
|
|
@ -119,8 +127,10 @@ def fmt_usage_stanza(root, verb):
|
||||||
return res
|
return res
|
||||||
|
|
||||||
text = "\n"
|
text = "\n"
|
||||||
|
if verb != "":
|
||||||
|
verb = " " + verb
|
||||||
for k in root.keys():
|
for k in root.keys():
|
||||||
text += " {0} {1} {2}\n".format(verb, k, fmt_args(root[k]))
|
text += " {0} {1} {2}\n".format(verb, k, fmt_args(root[k]))
|
||||||
return text
|
return text
|
||||||
|
|
||||||
parser = OptionParser(usage=make_usage())
|
parser = OptionParser(usage=make_usage())
|
||||||
|
|
@ -230,11 +240,7 @@ class Management:
|
||||||
return self.args[0]
|
return self.args[0]
|
||||||
|
|
||||||
def invoke_publish(self):
|
def invoke_publish(self):
|
||||||
(uri, payload) = self.parse_args(self.args,
|
(uri, payload) = self.parse_args(self.args, EXTRA_VERBS['publish'])
|
||||||
['routing_key', 'payload'],
|
|
||||||
{'exchange': 'amq.default',
|
|
||||||
'payload_encoding': 'string'},
|
|
||||||
'/exchanges/{vhost}/{exchange}/publish')
|
|
||||||
payload['properties'] = {} # TODO do we care here?
|
payload['properties'] = {} # TODO do we care here?
|
||||||
resp = json.loads(self.post(uri, json.dumps(payload)))
|
resp = json.loads(self.post(uri, json.dumps(payload)))
|
||||||
if resp['routed']:
|
if resp['routed']:
|
||||||
|
|
@ -243,10 +249,7 @@ class Management:
|
||||||
self.verbose("Message published but NOT routed")
|
self.verbose("Message published but NOT routed")
|
||||||
|
|
||||||
def invoke_get(self):
|
def invoke_get(self):
|
||||||
(uri, payload) = self.parse_args(self.args,
|
(uri, payload) = self.parse_args(self.args, EXTRA_VERBS['get'])
|
||||||
['queue'],
|
|
||||||
{'count': '1', 'requeue': 'true'},
|
|
||||||
'/queues/{vhost}/{queue}/get')
|
|
||||||
format_list(self.post(uri, json.dumps(payload)), [], self.options)
|
format_list(self.post(uri, json.dumps(payload)), [], self.options)
|
||||||
|
|
||||||
def invoke_export(self):
|
def invoke_export(self):
|
||||||
|
|
@ -311,11 +314,13 @@ class Management:
|
||||||
assert_usage(obj_type in root,
|
assert_usage(obj_type in root,
|
||||||
'Type {0} not recognised'.format(obj_type))
|
'Type {0} not recognised'.format(obj_type))
|
||||||
obj = root[obj_type]
|
obj = root[obj_type]
|
||||||
(uri, payload) = self.parse_args(self.args[1:], obj['mandatory'],
|
(uri, payload) = self.parse_args(self.args[1:], obj)
|
||||||
obj['optional'], obj['uri'])
|
|
||||||
return (obj_type, uri, payload)
|
return (obj_type, uri, payload)
|
||||||
|
|
||||||
def parse_args(self, args, mandatory, optional, uri_template):
|
def parse_args(self, args, obj):
|
||||||
|
mandatory = obj['mandatory']
|
||||||
|
optional = obj['optional']
|
||||||
|
uri_template = obj['uri']
|
||||||
payload = {}
|
payload = {}
|
||||||
for k in optional.keys():
|
for k in optional.keys():
|
||||||
payload[k] = optional[k]
|
payload[k] = optional[k]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue